Python - สตริง

สตริงเป็นหนึ่งในประเภทที่นิยมมากที่สุดใน Python เราสามารถสร้างได้ง่ายๆโดยใส่เครื่องหมายอัญประกาศ Python ถือว่าอัญประกาศเดี่ยวเหมือนกับเครื่องหมายคำพูดคู่ การสร้างสตริงทำได้ง่ายเพียงแค่กำหนดค่าให้กับตัวแปร ตัวอย่างเช่น -

var1 = 'Hello World!'
var2 = "Python Programming"

การเข้าถึงค่าในสตริง

Python ไม่รองรับประเภทอักขระ สิ่งเหล่านี้ถือว่าเป็นสตริงที่มีความยาวหนึ่งดังนั้นจึงถือว่าเป็นสตริงย่อยด้วย

ในการเข้าถึงสตริงย่อยให้ใช้วงเล็บเหลี่ยมสำหรับการแบ่งส่วนพร้อมกับดัชนีหรือดัชนีเพื่อรับสตริงย่อยของคุณ ตัวอย่างเช่น -

#!/usr/bin/python

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

var1[0]:  H
var2[1:5]:  ytho

การอัปเดตสตริง

คุณสามารถ "อัปเดต" สตริงที่มีอยู่โดย (re) กำหนดตัวแปรให้กับสตริงอื่น ค่าใหม่อาจเกี่ยวข้องกับค่าก่อนหน้าหรือกับสตริงที่แตกต่างกันโดยสิ้นเชิง ตัวอย่างเช่น -

#!/usr/bin/python

var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

Updated String :-  Hello Python

อักขระหลบหนี

ตารางต่อไปนี้คือรายการของอักขระ Escape หรืออักขระที่ไม่สามารถพิมพ์ได้ซึ่งสามารถแสดงด้วยเครื่องหมายแบ็กสแลช

อักขระหลบหนีถูกตีความ; ในสตริงที่ยกมาเดี่ยวและสตริงที่ยกมาคู่

เครื่องหมายแบ็กสแลช อักขระเลขฐานสิบหก คำอธิบาย
\ ก 0x07 กระดิ่งหรือแจ้งเตือน
\ b 0x08 Backspace
\ cx   Control-x
\ Cx   Control-x
\ e 0x1b หนี
\ ฉ 0x0c ฟีดรูปแบบ
\ M- \ Cx   Meta-Control-x
\ n 0x0a ขึ้นบรรทัดใหม่
\ nnn   สัญกรณ์ฐานแปดโดยที่ n อยู่ในช่วง 0.7
\ r 0x0d การกลับรถ
\ s 0x20 พื้นที่
\ t 0x09 แท็บ
\ v 0x0b แท็บแนวตั้ง
\ x   อักขระ x
\ xnn   สัญกรณ์เลขฐานสิบหกโดยที่ n อยู่ในช่วง 0.9, af หรือ AF

ตัวดำเนินการพิเศษสตริง

สมมติตัวแปรสตริง a ถือ 'สวัสดี' และตัวแปร b ถือ 'Python' จากนั้น -

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
+ การต่อ - เพิ่มค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ a + b จะให้ HelloPython
* การทำซ้ำ - สร้างสตริงใหม่โดยเชื่อมต่อสำเนาหลายชุดของสตริงเดียวกัน a * 2 จะให้ -HelloHello
[] Slice - ให้อักขระจากดัชนีที่กำหนด a [1] จะให้ e
[:] Range Slice - ให้อักขระจากช่วงที่กำหนด [1: 4] จะให้เอลล์
ใน Membership - ส่งกลับค่าจริงหากมีอักขระอยู่ในสตริงที่กำหนด H ในพินัยกรรมให้ 1
ไม่เข้า Membership - ส่งกลับค่าจริงหากอักขระไม่มีอยู่ในสตริงที่กำหนด M ไม่อยู่ในพินัยกรรมให้ 1
r / R Raw String - ระงับความหมายที่แท้จริงของอักขระ Escape ไวยากรณ์สำหรับสตริงดิบจะเหมือนกับสตริงปกติทุกประการยกเว้นตัวดำเนินการสตริงดิบตัวอักษร "r" ซึ่งนำหน้าเครื่องหมายคำพูด "r" สามารถเป็นตัวพิมพ์เล็ก (r) หรือตัวพิมพ์ใหญ่ (R) และต้องอยู่หน้าเครื่องหมายคำพูดแรกทันที พิมพ์ r '\ n' พิมพ์ \ n และพิมพ์ R '\ n'prints \ n
% รูปแบบ - ดำเนินการจัดรูปแบบสตริง ดูที่หัวข้อถัดไป

ตัวดำเนินการจัดรูปแบบสตริง

หนึ่งในคุณสมบัติที่ยอดเยี่ยมที่สุดของ Python คือตัวดำเนินการรูปแบบสตริง% ตัวดำเนินการนี้มีลักษณะเฉพาะสำหรับสตริงและประกอบขึ้นสำหรับแพ็คของการมีฟังก์ชันจากตระกูล printf () ของ C ต่อไปนี้เป็นตัวอย่างง่ายๆ -

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21)

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

My name is Zara and weight is 21 kg!

นี่คือรายการชุดสัญลักษณ์ที่สมบูรณ์ซึ่งสามารถใช้ร่วมกับ% -

รูปแบบสัญลักษณ์ การแปลง
%ค ตัวละคร
% s การแปลงสตริงผ่าน str () ก่อนการจัดรูปแบบ
%ผม จำนวนเต็มทศนิยมที่ลงนาม
% d จำนวนเต็มทศนิยมที่ลงนาม
%ยู จำนวนเต็มทศนิยมที่ไม่ได้ลงชื่อ
% o จำนวนเต็มฐานแปด
% x เลขฐานสิบหก (อักษรตัวพิมพ์เล็ก)
% X เลขฐานสิบหก (อักษรตัวพิมพ์ใหญ่)
% e สัญกรณ์เลขชี้กำลัง (ด้วยตัวพิมพ์เล็ก 'e')
สัญกรณ์เอกซ์โพเนนเชียล (มี UPPERcase 'E')
% ฉ จำนวนจริงลอยตัว
% ก ยิ่งสั้นลงของ% f และ% e
% ช ยิ่งสั้นลงของ% f และ% E

สัญลักษณ์และฟังก์ชันการทำงานที่รองรับอื่น ๆ แสดงอยู่ในตารางต่อไปนี้ -

สัญลักษณ์ ฟังก์ชันการทำงาน
* อาร์กิวเมนต์ระบุความกว้างหรือความแม่นยำ
- เหตุผลด้านซ้าย
+ แสดงเครื่องหมาย
<sp> เว้นช่องว่างไว้ก่อนจำนวนบวก
# เพิ่มเลขศูนย์นำหน้าฐานแปด ('0') หรือเลขฐานสิบหกนำหน้า '0x' หรือ '0X' ขึ้นอยู่กับว่าใช้ 'x' หรือ 'X'
0 รองจากซ้ายด้วยศูนย์ (แทนช่องว่าง)
% '%%' ทำให้คุณมีลิเทอรัลตัวเดียว '%'
(หลากหลาย) ตัวแปรการแมป (อาร์กิวเมนต์พจนานุกรม)
mn m คือความกว้างรวมขั้นต่ำและ n คือจำนวนหลักที่จะแสดงหลังจุดทศนิยม (ถ้าใช้ appl)

คำคมสาม

คำพูดสามคำของ Python ช่วยให้สตริงสามารถขยายได้หลายบรรทัดรวมถึง NEWLINE แบบคำต่อคำแท็บและอักขระพิเศษอื่น ๆ

ไวยากรณ์สำหรับคำพูดสามคำประกอบด้วยสามคำที่ติดต่อกัน single or double คำพูด

#!/usr/bin/python

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้ สังเกตว่าอักขระพิเศษทุกตัวถูกแปลงเป็นรูปแบบสิ่งพิมพ์ลงไปที่ NEWLINE สุดท้ายที่ท้ายสตริงระหว่าง "ขึ้น" และปิดคำพูดสามคำ นอกจากนี้โปรดทราบว่า NEWLINE เกิดขึ้นกับการกลับรถอย่างชัดเจนที่ท้ายบรรทัดหรือรหัสหนี (\ n) -

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

สตริงดิบไม่ถือว่าแบ็กสแลชเป็นอักขระพิเศษเลย อักขระทุกตัวที่คุณใส่ลงในสตริงดิบยังคงอยู่ในแบบที่คุณเขียน -

#!/usr/bin/python

print 'C:\\nowhere'

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

C:\nowhere

ตอนนี้ให้ใช้สตริงดิบ เราจะแสดงออกมาr'expression' ดังต่อไปนี้ -

#!/usr/bin/python

print r'C:\\nowhere'

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

C:\\nowhere

สตริง Unicode

สตริงปกติใน Python จะถูกเก็บไว้ภายในเป็น ASCII แบบ 8 บิตในขณะที่สตริง Unicode จะถูกจัดเก็บเป็น Unicode 16 บิต ซึ่งช่วยให้มีชุดอักขระที่หลากหลายมากขึ้นรวมถึงอักขระพิเศษจากภาษาส่วนใหญ่ในโลก ฉันจะ จำกัด การปฏิบัติต่อสตริง Unicode ของฉันดังต่อไปนี้ -

#!/usr/bin/python

print u'Hello, world!'

เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -

Hello, world!

ดังที่คุณเห็นสตริง Unicode ใช้คำนำหน้า u เช่นเดียวกับสตริงดิบใช้คำนำหน้า r

วิธีการสตริงในตัว

Python มีวิธีการในตัวต่อไปนี้เพื่อจัดการกับสตริง -

ซีเนียร์ วิธีการพร้อมคำอธิบาย
1 ใช้ประโยชน์ ()

อักษรตัวแรกของสตริงเป็นตัวพิมพ์ใหญ่

2 ศูนย์ (ความกว้างช่องเติม)

ส่งคืนสตริงที่มีช่องว่างโดยให้สตริงเดิมอยู่ตรงกลางกับคอลัมน์ความกว้างทั้งหมด

3 นับ (str, ขอ = 0, end = len (สตริง))

นับจำนวนครั้งที่ str เกิดขึ้นในสตริงหรือในสตริงย่อยของสตริงหากดัชนีเริ่มต้นขอและสิ้นสุดดัชนีสิ้นสุดจะได้รับ

4 ถอดรหัส (การเข้ารหัส = 'UTF-8', ข้อผิดพลาด = 'เข้มงวด')

ถอดรหัสสตริงโดยใช้ตัวแปลงสัญญาณที่ลงทะเบียนสำหรับการเข้ารหัส การเข้ารหัสมีค่าเริ่มต้นเป็นการเข้ารหัสสตริงเริ่มต้น

5 เข้ารหัส (การเข้ารหัส = 'UTF-8', ข้อผิดพลาด = 'เข้มงวด')

ส่งคืนเวอร์ชันสตริงที่เข้ารหัสของสตริง เมื่อเกิดข้อผิดพลาดค่าเริ่มต้นคือการเพิ่ม ValueError เว้นแต่จะมีการระบุข้อผิดพลาดด้วย "ละเว้น" หรือ "แทนที่"

6 สิ้นสุดด้วย (คำต่อท้ายขอ = 0, end = len (สตริง))

กำหนดว่าสตริงหรือสตริงย่อยของสตริง (ถ้าดัชนีเริ่มต้นขอและสิ้นสุดดัชนีสิ้นสุดจะได้รับ) ลงท้ายด้วยคำต่อท้าย คืนค่าจริงถ้าเป็นอย่างนั้นและเป็นเท็จ

7 ขยายแท็บ (tabsize = 8)

ขยายแท็บในสตริงเป็นหลายช่องว่าง ค่าเริ่มต้นคือ 8 ช่องว่างต่อแท็บหากไม่ได้ระบุขนาดแท็บ

8 ค้นหา (str, ขอ = 0 end = len (สตริง))

ตรวจสอบว่า str เกิดขึ้นในสตริงหรือในสตริงย่อยของสตริงหากดัชนีเริ่มต้นขอและสิ้นสุดดัชนีสิ้นสุดจะได้รับดัชนีผลตอบแทนหากพบและ -1 มิฉะนั้น

9 ดัชนี (str, ขอ = 0, end = len (สตริง))

เหมือนกับ find () แต่จะมีข้อยกเว้นหากไม่พบ str

10 ไอซอลนัม ()

ส่งคืนค่าจริงหากสตริงมีอักขระอย่างน้อย 1 ตัวและอักขระทั้งหมดเป็นตัวอักษรและตัวเลขคละกันหรือเป็นเท็จ

11 isalpha ()

ส่งคืนจริงหากสตริงมีอักขระอย่างน้อย 1 ตัวและอักขระทั้งหมดเป็นตัวอักษรและเป็นเท็จ

12 isdigit ()

ส่งคืนจริงหากสตริงมีเพียงตัวเลขและเป็นเท็จ

13 ไอโซเวอร์ ()

ส่งคืนจริงหากสตริงมีอักขระที่อยู่ในกล่องอย่างน้อย 1 ตัวและอักขระที่อยู่ในกล่องทั้งหมดเป็นตัวพิมพ์เล็กและเป็นเท็จ

14 เป็นตัวเลข ()

ส่งคืนจริงหากสตริง Unicode มีเฉพาะอักขระตัวเลขและเป็นเท็จ

15 isspace ()

ส่งคืนจริงหากสตริงมีเฉพาะอักขระเว้นวรรคและเป็นเท็จ

16 istitle ()

ส่งคืนจริงหากสตริงเป็น "titlecased" อย่างถูกต้องและเป็นเท็จ

17 isupper ()

ส่งคืนจริงหากสตริงมีอักขระที่อยู่อย่างน้อยหนึ่งตัวและอักขระที่อยู่ในกล่องทั้งหมดเป็นตัวพิมพ์ใหญ่และเป็นเท็จ

18 เข้าร่วม (seq)

ผสาน (ต่อกัน) การแสดงสตริงขององค์ประกอบในลำดับ seq เข้ากับสตริงด้วยสตริงตัวคั่น

19 len (สตริง)

ส่งกลับความยาวของสตริง

20 ljust (ความกว้าง [ช่องเติม])

ส่งคืนสตริงที่มีช่องว่างที่มีสตริงเดิมชิดซ้ายเป็นคอลัมน์ความกว้างทั้งหมด

21 ต่ำกว่า ()

แปลงอักษรตัวพิมพ์ใหญ่ทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก

22 lstrip ()

ลบช่องว่างนำหน้าทั้งหมดในสตริง

23 แมคโครทรานส์ ()

ส่งคืนตารางการแปลที่จะใช้ในฟังก์ชันแปล

24 สูงสุด (str)

ส่งคืนอักขระตามตัวอักษรสูงสุดจากสตริง str

25 นาที (str)

ส่งกลับอักขระตามตัวอักษรขั้นต่ำจากสตริง str

26 แทนที่ (เก่าใหม่ [สูงสุด])

แทนที่การเกิดขึ้นทั้งหมดของสตริงเก่าด้วยใหม่หรือสูงสุดที่เกิดขึ้นหากกำหนดสูงสุด

27 rfind (str, ขอ = 0, end = len (สตริง))

เหมือนกับ find () แต่ค้นหาย้อนกลับในสตริง

28 rindex (str, ขอ = 0, end = len (สตริง))

เหมือนกับดัชนี () แต่ค้นหาย้อนหลังในสตริง

29 rjust (ความกว้าง [Fillchar])

ส่งคืนสตริงที่มีช่องว่างพร้อมกับสตริงเดิมที่จัดชิดขวาให้กับคอลัมน์ความกว้างทั้งหมด

30 rstrip ()

ลบช่องว่างต่อท้ายทั้งหมดของสตริง

31 แยก (str = "", num = string.count (str))

แยกสตริงตามตัวคั่น str (ช่องว่างหากไม่ได้ระบุไว้) และส่งคืนรายการสตริงย่อย แยกเป็นสตริงย่อยจำนวนมากที่สุดหากกำหนด

32 เส้นแบ่ง (num = string.count ('\ n'))

แยกสตริงทั้งหมด (หรือ num) NEWLINE และส่งกลับรายการของแต่ละบรรทัดโดยลบ NEWLINE ออก

33 เริ่มต้นด้วย (str, ขอ = 0, end = len (สตริง))

กำหนดว่าสตริงหรือสตริงย่อยของสตริง (ถ้าดัชนีเริ่มต้นขอและสิ้นสุดดัชนีสิ้นสุดจะได้รับ) เริ่มต้นด้วยสตริงย่อย str; คืนค่าจริงถ้าเป็นอย่างนั้นและเป็นเท็จ

34 แถบ ([ตัวอักษร])

ดำเนินการทั้ง lstrip () และ rstrip () บนสตริง

35 แลกเปลี่ยน ()

Inverts case สำหรับตัวอักษรทั้งหมดในสตริง

36 หัวข้อ()

ส่งคืนสตริงเวอร์ชัน "titlecased" นั่นคือทุกคำขึ้นต้นด้วยตัวพิมพ์ใหญ่และส่วนที่เหลือเป็นตัวพิมพ์เล็ก

37 แปล (ตาราง, deleteechars = "")

แปลสตริงตามตารางการแปล str (256 ตัวอักษร) โดยลบสิ่งเหล่านั้นในสตริงเดล

38 บน ()

แปลงอักษรตัวพิมพ์เล็กในสตริงเป็นตัวพิมพ์ใหญ่

39 zfill (กว้าง)

ส่งคืนสตริงเดิมที่มีเลขศูนย์เป็นอักขระความกว้างทั้งหมด มีไว้สำหรับตัวเลข zfill () เก็บเครื่องหมายใด ๆ ที่กำหนดไว้ (น้อยกว่าหนึ่งศูนย์)

40 เป็นทศนิยม ()

ส่งคืนจริงหากสตริง Unicode มีเฉพาะอักขระทศนิยมและเป็นเท็จ