Python hướng đối tượng - Tệp và chuỗi

Dây

Chuỗi là kiểu dữ liệu phổ biến nhất được sử dụng trong mọi ngôn ngữ lập trình. Tại sao? Bởi vì chúng ta hiểu văn bản hơn là những con số, nên khi viết và nói chuyện, chúng ta sử dụng văn bản và từ ngữ, tương tự trong lập trình chúng ta cũng sử dụng chuỗi ký tự. Trong chuỗi, chúng tôi phân tích cú pháp văn bản, phân tích ngữ nghĩa văn bản và thực hiện khai thác dữ liệu - và tất cả dữ liệu này là văn bản do con người sử dụng. Chuỗi trong Python là bất biến.

Thao tác chuỗi

Trong Python, chuỗi có thể được đánh dấu theo nhiều cách, sử dụng dấu nháy đơn ('), dấu ngoặc kép (“) hoặc thậm chí dấu nháy ba (' '') trong trường hợp chuỗi nhiều dòng.

>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')

Thao tác với chuỗi rất hữu ích và được sử dụng rất rộng rãi trong mọi ngôn ngữ. Thông thường, các lập trình viên được yêu cầu chia nhỏ các chuỗi và kiểm tra chúng chặt chẽ.

Các chuỗi có thể được lặp lại (từng ký tự), cắt lát hoặc nối. Cú pháp giống như đối với danh sách.

Lớp str có nhiều phương thức trên đó để giúp thao tác với chuỗi dễ dàng hơn. Các lệnh dir và help cung cấp hướng dẫn trong trình thông dịch Python cách sử dụng chúng.

Dưới đây là một số phương pháp chuỗi thường được sử dụng mà chúng tôi sử dụng.

Sr.No. Phương pháp & Mô tả
1

isalpha()

Kiểm tra xem tất cả các ký tự đều là Bảng chữ cái

2

isdigit()

Kiểm tra ký tự chữ số

3

isdecimal()

Kiểm tra các ký tự thập phân

4

isnumeric()

kiểm tra các ký tự số

5

find()

Trả về Chỉ số cao nhất của chuỗi con

6

istitle()

Kiểm tra chuỗi dựa trên tiêu đề

7

join()

Trả về một chuỗi được nối

số 8

lower()

trả về chuỗi ký tự thấp hơn

9

upper()

trả về chuỗi ký tự trên

10

partion()

Trả về một bộ giá trị

11

bytearray()

Trả về mảng có kích thước byte đã cho

12

enumerate()

Trả về một đối tượng liệt kê

13

isprintable()

Kiểm tra ký tự in được

Hãy thử chạy một vài phương thức chuỗi,

>>> str1 = 'Hello World!'
>>> str1.startswith('h')
False
>>> str1.startswith('H')
True
>>> str1.endswith('d')
False
>>> str1.endswith('d!')
True
>>> str1.find('o')
4
>>> #Above returns the index of the first occurence of the character/substring.
>>> str1.find('lo')
3
>>> str1.upper()
'HELLO WORLD!'
>>> str1.lower()
'hello world!'
>>> str1.index('b')
Traceback (most recent call last):
   File "<pyshell#19>", line 1, in <module>
      str1.index('b')
ValueError: substring not found
>>> s = ('hello How Are You')
>>> s.split(' ')
['hello', 'How', 'Are', 'You']
>>> s1 = s.split(' ')
>>> '*'.join(s1)
'hello*How*Are*You'
>>> s.partition(' ')
('hello', ' ', 'How Are You')
>>>

Định dạng chuỗi

Trong Python 3.x, định dạng chuỗi đã thay đổi, giờ đây nó hợp lý hơn và linh hoạt hơn. Định dạng có thể được thực hiện bằng cách sử dụng phương thức format () hoặc dấu% (kiểu cũ) trong chuỗi định dạng.

Chuỗi có thể chứa văn bản theo nghĩa đen hoặc các trường thay thế được phân tách bằng dấu ngoặc nhọn {} và mỗi trường thay thế có thể chứa chỉ mục số của đối số vị trí hoặc tên của đối số từ khóa.

cú pháp

str.format(*args, **kwargs)

Định dạng cơ bản

>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'

Ví dụ dưới đây cho phép sắp xếp lại thứ tự hiển thị mà không thay đổi các đối số.

>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'

Đệm và căn chỉnh chuỗi

Một giá trị có thể được đệm vào một độ dài cụ thể.

>>> #Padding Character, can be space or special character
>>> '{:12}'.format('PYTHON')
'PYTHON '
>>> '{:>12}'.format('PYTHON')
' PYTHON'
>>> '{:<{}s}'.format('PYTHON',12)
'PYTHON '
>>> '{:*<12}'.format('PYTHON')
'PYTHON******'
>>> '{:*^12}'.format('PYTHON')
'***PYTHON***'
>>> '{:.15}'.format('PYTHON OBJECT ORIENTED PROGRAMMING')
'PYTHON OBJECT O'
>>> #Above, truncated 15 characters from the left side of a specified string
>>> '{:.{}}'.format('PYTHON OBJECT ORIENTED',15)
'PYTHON OBJECT O'
>>> #Named Placeholders
>>> data = {'Name':'Raghu', 'Place':'Bangalore'}
>>> '{Name} {Place}'.format(**data)
'Raghu Bangalore'
>>> #Datetime
>>> from datetime import datetime
>>> '{:%Y/%m/%d.%H:%M}'.format(datetime(2018,3,26,9,57))
'2018/03/26.09:57'

Chuỗi là Unicode

Chuỗi dưới dạng tập hợp các ký tự Unicode bất biến. Chuỗi Unicode tạo cơ hội để tạo phần mềm hoặc chương trình hoạt động ở mọi nơi vì chuỗi Unicode có thể đại diện cho bất kỳ ký tự nào có thể có chứ không chỉ các ký tự ASCII.

Nhiều hoạt động IO chỉ biết cách xử lý byte, ngay cả khi đối tượng byte tham chiếu đến dữ liệu dạng văn bản. Do đó, điều rất quan trọng là phải biết cách chuyển đổi giữa byte và Unicode.

Chuyển đổi văn bản thành byte

Chuyển đổi một chuỗi thành đối tượng byte được gọi là mã hóa. Có nhiều dạng mã hóa, những dạng phổ biến nhất là: PNG; JPEG, MP3, WAV, ASCII, UTF-8, v.v. Ngoài ra, đây (mã hóa) là một định dạng để biểu diễn âm thanh, hình ảnh, văn bản, v.v. theo byte.

Việc chuyển đổi này có thể thực hiện được thông qua encode (). Nó lấy kỹ thuật mã hóa làm đối số. Theo mặc định, chúng tôi sử dụng kỹ thuật 'UTF-8'.

>>> # Python Code to demonstrate string encoding 
>>> 
>>> # Initialising a String 
>>> x = 'TutorialsPoint' 
>>> 
>>> #Initialising a byte object 
>>> y = b'TutorialsPoint'
>>> 
>>> # Using encode() to encode the String >>> # encoded version of x is stored in z using ASCII mapping 
>>> z = x.encode('ASCII') 
>>> 
>>> # Check if x is converted to bytes or not 
>>> 
>>> if(z==y): 
   print('Encoding Successful!') 
else: 
   print('Encoding Unsuccessful!') 
Encoding Successful!

Converting bytes to text

Chuyển đổi byte thành văn bản được gọi là giải mã. Điều này được thực hiện thông qua decode (). Chúng ta có thể chuyển đổi một chuỗi byte thành một chuỗi ký tự nếu chúng ta biết mã hóa nào được sử dụng để mã hóa nó.

Vì vậy Mã hóa và giải mã là quá trình nghịch đảo.

>>> 
>>> # Python code to demonstrate Byte Decoding 
>>> 
>>> #Initialise a String 
>>> x = 'TutorialsPoint' 
>>> 
>>> #Initialising a byte object 
>>> y = b'TutorialsPoint' 
>>> 
>>> #using decode() to decode the Byte object 
>>> # decoded version of y is stored in z using ASCII mapping 
>>> z = y.decode('ASCII')
>>> #Check if y is converted to String or not 
>>> if (z == x): 
   print('Decoding Successful!') 
else: 
   print('Decoding Unsuccessful!') Decoding Successful! 
>>>

Tệp I / O

Hệ điều hành biểu thị tệp dưới dạng một chuỗi byte, không phải văn bản.

Tệp là một vị trí được đặt tên trên đĩa để lưu trữ thông tin liên quan. Nó được sử dụng để lưu trữ vĩnh viễn dữ liệu trong đĩa của bạn.

Trong Python, một hoạt động tệp diễn ra theo thứ tự sau.

  • Mở tệp tin
  • Đọc hoặc ghi vào tệp (thao tác). Mở tệp
  • Đóng tệp.

Python bao bọc luồng byte đến (hoặc đi) bằng các lệnh gọi giải mã (hoặc mã hóa) thích hợp để chúng ta có thể xử lý trực tiếp với các đối tượng str.

Mở tệp

Python có sẵn một hàm open () để mở một tệp. Điều này sẽ tạo ra một đối tượng tệp, còn được gọi là một xử lý vì nó được sử dụng để đọc hoặc sửa đổi tệp cho phù hợp.

>>> f = open(r'c:\users\rajesh\Desktop\index.webm','rb')
>>> f
<_io.BufferedReader name='c:\\users\\rajesh\\Desktop\\index.webm'>
>>> f.mode
'rb'
>>> f.name
'c:\\users\\rajesh\\Desktop\\index.webm'

Để đọc văn bản từ tệp, chúng ta chỉ cần chuyển tên tệp vào hàm. Tệp sẽ được mở để đọc và các byte sẽ được chuyển đổi thành văn bản bằng cách sử dụng mã hóa mặc định của nền tảng.