Object Oriented Python - ไฟล์และสตริง
สตริง
สตริงเป็นประเภทข้อมูลที่นิยมใช้มากที่สุดในทุกภาษาโปรแกรม ทำไม? เนื่องจากเราเข้าใจข้อความดีกว่าตัวเลขดังนั้นในการเขียนและการพูดเราจึงใช้ข้อความและคำในการเขียนโปรแกรมเช่นเดียวกันเราจึงใช้สตริง ในสตริงเราแยกวิเคราะห์ข้อความวิเคราะห์ความหมายของข้อความและทำการขุดข้อมูล - และข้อมูลทั้งหมดนี้เป็นข้อความที่มนุษย์บริโภคสตริงใน Python ไม่เปลี่ยนรูป
การจัดการสตริง
ใน Python สามารถทำเครื่องหมายสตริงได้หลายวิธีโดยใช้ single quote ('), double quote (") หรือแม้แต่ triple quote (' '') ในกรณีของสตริงหลายบรรทัด
>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')
การปรับแต่งสตริงมีประโยชน์มากและใช้กันอย่างแพร่หลายในทุกภาษา บ่อยครั้งโปรแกรมเมอร์ต้องแยกสายและตรวจสอบอย่างใกล้ชิด
สตริงสามารถวนซ้ำได้ (อักขระตามอักขระ) หั่นบาง ๆ หรือเรียงต่อกัน ไวยากรณ์เหมือนกับรายการ
คลาส str มีวิธีการมากมายเพื่อให้จัดการกับสตริงได้ง่ายขึ้น คำสั่ง dir และ help ให้คำแนะนำใน Python interpreter ว่าจะใช้อย่างไร
ด้านล่างนี้เป็นวิธีการสตริงที่เราใช้กันทั่วไป
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | isalpha() ตรวจสอบว่าอักขระทั้งหมดเป็น Alphabets หรือไม่ |
2 | isdigit() ตรวจสอบอักขระหลัก |
3 | isdecimal() ตรวจสอบอักขระทศนิยม |
4 | isnumeric() ตรวจสอบอักขระตัวเลข |
5 | find() ส่งกลับดัชนีสูงสุดของสตริงย่อย |
6 | istitle() ตรวจสอบสตริง Titlecased |
7 | join() ส่งคืนสตริงที่ต่อกัน |
8 | lower() ส่งคืนสตริง cased ที่ต่ำกว่า |
9 | upper() ส่งคืนสตริง cased ด้านบน |
10 | partion() ส่งคืนทูเพิล |
11 | bytearray() ส่งคืนอาร์เรย์ของขนาดไบต์ที่กำหนด |
12 | enumerate() ส่งคืนวัตถุแจงนับ |
13 | isprintable() ตรวจสอบอักขระที่พิมพ์ได้ |
ลองเรียกใช้วิธีการสตริงสองสามวิธี
>>> 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')
>>>
การจัดรูปแบบสตริง
ใน Python 3.x การจัดรูปแบบของสตริงมีการเปลี่ยนแปลงตอนนี้มีเหตุผลมากขึ้นและมีความยืดหยุ่นมากขึ้น การจัดรูปแบบสามารถทำได้โดยใช้วิธีการ format () หรือเครื่องหมาย% (แบบเก่า) ในสตริงรูปแบบ
สตริงสามารถมีข้อความตามตัวอักษรหรือฟิลด์แทนที่คั่นด้วยวงเล็บปีกกา {} และแต่ละฟิลด์แทนที่อาจมีดัชนีตัวเลขของอาร์กิวเมนต์ตำแหน่งหรือชื่อของอาร์กิวเมนต์คำหลัก
ไวยากรณ์
str.format(*args, **kwargs)
การจัดรูปแบบพื้นฐาน
>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'
ตัวอย่างด้านล่างช่วยให้สามารถจัดเรียงลำดับการแสดงผลใหม่ได้โดยไม่ต้องเปลี่ยนอาร์กิวเมนต์
>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'
การเว้นและการจัดตำแหน่งสตริง
สามารถเพิ่มค่าตามความยาวที่ระบุได้
>>> #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'
สตริงคือ Unicode
สตริงเป็นคอลเลกชันของอักขระ Unicode ที่ไม่เปลี่ยนรูป สตริง Unicode ให้โอกาสในการสร้างซอฟต์แวร์หรือโปรแกรมที่ทำงานได้ทุกที่เนื่องจากสตริง Unicode สามารถแสดงอักขระที่เป็นไปได้ใด ๆ ที่เป็นไปได้ไม่ใช่แค่อักขระ ASCII
การดำเนินการ IO จำนวนมากรู้วิธีจัดการกับไบต์เท่านั้นแม้ว่าออบเจ็กต์ไบต์จะอ้างถึงข้อมูลที่เป็นข้อความก็ตาม ดังนั้นจึงเป็นเรื่องสำคัญมากที่จะต้องทราบวิธีการแลกเปลี่ยนระหว่างไบต์และ Unicode
การแปลงข้อความเป็นไบต์
การแปลงสตริงเป็นไบต์อ็อบเจกต์เรียกว่าเป็นการเข้ารหัส การเข้ารหัสมีหลายรูปแบบโดยทั่วไป ได้แก่ PNG; JPEG, MP3, WAV, ASCII, UTF-8 เป็นต้นนอกจากนี้ (การเข้ารหัส) เป็นรูปแบบที่ใช้แทนเสียงรูปภาพข้อความและอื่น ๆ ในหน่วยไบต์
การแปลงนี้เป็นไปได้ผ่านการเข้ารหัส () ใช้เทคนิคการเข้ารหัสเป็นอาร์กิวเมนต์ โดยค่าเริ่มต้นเราใช้เทคนิค '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
การแปลงไบต์เป็นข้อความเรียกว่าการถอดรหัส สิ่งนี้ดำเนินการผ่านการถอดรหัส () เราสามารถแปลงสตริงไบต์เป็นสตริงอักขระได้ถ้าเรารู้ว่าการเข้ารหัสใดที่ใช้ในการเข้ารหัส
ดังนั้นการเข้ารหัสและถอดรหัสจึงเป็นกระบวนการผกผัน
>>>
>>> # 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!
>>>
ไฟล์ I / O
ระบบปฏิบัติการแทนไฟล์ตามลำดับไบต์ไม่ใช่ข้อความ
ไฟล์คือตำแหน่งที่ระบุชื่อบนดิสก์เพื่อจัดเก็บข้อมูลที่เกี่ยวข้อง ใช้เพื่อจัดเก็บข้อมูลอย่างถาวรในดิสก์ของคุณ
ใน Python การดำเนินการไฟล์จะเกิดขึ้นตามลำดับต่อไปนี้
- เปิดไฟล์
- อ่านหรือเขียนลงในไฟล์ (การดำเนินการ) เปิดไฟล์
- ปิดไฟล์
Python ห่อกระแสข้อมูลไบต์ขาเข้า (หรือขาออก) ด้วยการเรียกถอดรหัส (หรือเข้ารหัส) ที่เหมาะสมเพื่อให้เราจัดการกับวัตถุ str ได้โดยตรง
การเปิดไฟล์
Python มีฟังก์ชันในตัว open () เพื่อเปิดไฟล์ สิ่งนี้จะสร้างอ็อบเจ็กต์ไฟล์หรือที่เรียกว่าแฮนเดิลซึ่งใช้เพื่ออ่านหรือแก้ไขไฟล์ตามนั้น
>>> 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'
สำหรับการอ่านข้อความจากไฟล์เราจะต้องส่งชื่อไฟล์เข้าไปในฟังก์ชันเท่านั้น ไฟล์จะถูกเปิดขึ้นเพื่ออ่านและไบต์จะถูกแปลงเป็นข้อความโดยใช้การเข้ารหัสเริ่มต้นของแพลตฟอร์ม