Python Strings ข้อมูลชนิดสตริงหรือสายอักขระในภาษาไพธอน สามารถกำหนดด้วยเครื่องหมาย single quotation ' ' หรือ double quotation " " ก็ได้ จะได้ผลลัพธ์ที่เหมือนกัน เช่น ‘Hello World.’ หรือ “Hello World.”
และเราสามารถแสดงค่าของสตริงออกมาโดยการใชัฟังก์ชัน print() ดังตัวอย่าง
print('Hello World.')
print("This is string")การกำหนดค่าข้อมูลประเภท String ให้กับตัวแปร
เราสามารถกำหนดค่าข้อมูลชนิด String ให้กับตัวแปรได้โดยการสร้างตัวแปรขึ้นมา ตามด้วยเครื่องหมาย = และข้อความที่ต้องการกำหนดให้ตัวแปร ซึ่งต้องอยู่ภายในเครื่องหมาย ' ' หรือ " "
a = 'Hello World.'
b = "This is string"
print(a)
print(b)การกำหนดค่าข้อมูลประเภท String แบบหลายบรรทัดให้กับตัวแปร
เราสามารถกำหนดค่าข้อมูลประเภทส String แบบหลายบรรทัดให้กับตัวแปร โดยการใช้เครื่องหมาย three quotes ( """ """ ) คือเปิดด้วยเครื่องหมายดับเบิ้ลโควท 3 อัน """ ตามด้วยข้อความแบบหลายบรรทัด แล้วปิดด้วยเครื่องหมายดับเบิ้ลโควท 3 อันอีกที """ โดยลักษณะการใช้งานจะเป็นดังนี้
x = """Line 1,
Line 2,
Line 3,
Line 4,
Line 5"""
print(x)Line 1,
Line 2,
Line 3,
Line 4,
Line 5
หรือจะใช้เป็นเครื่องหมายซิงเกิ้ลโควทครอบแทนก็ได้ เช่น '''ข้อความที่ต้องการกำหนด'''
x = '''Line 1,
Line 2,
Line 3,
Line 4,
Line 5'''
print(x)Line 1,
Line 2,
Line 3,
Line 4,
Line 5
สตริงก็คืออาเรย์ Strings are Arrays
ข้อมูลชนิด String ในภาษาไพธอน ก็คืออาเรย์ประเภทหนึ่ง เช่น เมื่อเรากำหนดค่าเป็น “ABCDEFGHIJKLMNOPQRSTUVWXYZ” ข้อมูลที่เรากำหนดไปถือว่าเป็นอาเรย์ และเราสามารถเข้าถึงข้อมูลได้โดยการใช้เครื่องหมาย Square brackets [] เหมือนการเข้าถึงข้อมูลในอาเรย์ตามปกติ โดยการนับอินเด็กซ์ในอาเรย์จะเริ่มจากลำดับที่ 0 1 2 3 ไปเรื่อย ๆ เข่น
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(x[0])
print(x[25])- บรรทัดที่ 1 เราสร้างตัวแปร
xขึ้นมา แล้วกำหนดค่าให้เป็นสตริง “ABCDEFGHIJKLMNOPQRSTUVWXYZ” ตัวแปรxจะกลายเป็นข้อมูลชนิดอาเรย์โดยอัตโนมัติ - บรรทัดที่ 2 ใช้คำสั่ง
print()เพื่อให้แสดงค่าในตัวแปรxโดยอ้างอิงอินเด็กซ์ลำดับที่ 0 จะได้ข้อมูลตัวแรกในอาเรย์xนั่นก็คือตัวอักษร A - บรรทัดที่ 3 ใช้คำสั่ง
print()เพื่อให้แสดงค่าในตัวแปรxโดยอ้างอิงอินเด็กซ์ลำดับที่ 25 จะได้ข้อมูลตัวสุดท้ายในอาเรย์xนั่นก็คือตัวอักษร Z
A
Z
Slicing เข้าถึงข้อมูลในสตริงแบบกำหนดช่วงข้อมูล
เราสามารถเข้าถึงข้อมูลใน String โดยการกำหนดช่วงข้อมูลได้ โดยการใช้ slice syntax ก็คือการเข้าถึงอักขระในสตริงแบบอาเรย์เหมือนในหัวข้อก่อนหน้านี้ แต่เราจะกำหนดอินเด็กซ์เริ่มต้น คั่นด้วยเครื่องหมายโคลอน : ตามด้วยอินเด็กซ์สิ้นสุด เช่น x[1:10] เราจะได้ข้อมูลลำดับที่ 1 ถึงลำดับที่ 10-1 ดังตัวอย่าง
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(x[1:10])- บรรทัดที่ 1 สร้างตัวแปร
xขึ้นมา แล้วกำหนดค่าให้เป็นสตริง"ABCDEFGHIJKLMNOPQRSTUVWXYZ" - บรรทัดที่ 2 สั่งให้แสดงค่าในตัวแปร
xโดยกำหนดช่วงข้อมูลลำดับที่ 1 ถึงลำดับที่ 10 โดยข้อมูลที่เราจะได้ ตัวแรกคือตัวอักษรลำดับที่ 1 นั่นคือตัวอักษร B (ไม่ใช่ A เพราะอินเด็กซ์เริ่มจาก 0) ตัวสุดท้ายคือตัวอักษรลำดับที่ 10-1 นั่นคือลำดับที่ 9 ได้แก่ตัวอักษร J ดังนั้น ข้อมูลที่เราจะได้จากคำสั่งนี้ก็คือ BCDEFGHIJ
BCDEFGHIJ
Negative Indexing เข้าถึงข้อมูลโดยอินเด็กซ์ที่ติดลบ
เราสามารถเข้าด้วยข้อมูลในสตริงอาเรย์โดยใช้ slice syntax ด้วยการระบุช่วงข้อมูลด้วยตัวเลขอินเด็กซ์ที่ติดลบได้ จะเป็นการเริ่มนับอินเด็กซ์จากอักขระตัวสุดท้าย ตัวอย่างเช่น
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(x[-7:-1])- บรรทัดที่ 1 สร้างตัวแปร
xขึ้นมา แล้วกำหนดค่าให้เป็นสตริง"ABCDEFGHIJKLMNOPQRSTUVWXYZ" - บรรทัดที่ 2 เข้าถึงข้อมูลในสตริงแบบ slice syntax โดยระบุค่าอินเด็กซ์ติดลบ ในตัวอย่างระบุค่าเริ่มต้นเป็น -7 (หมายถึง ตัวอักขระตัวที่ 7 นับมาจากตัวสุดท้าย นั่นคือตัว T) และระบุค่าสิ้นสุดเป็น -1 (หมายถึง ตัวอักขระตัวที่ 1 นับจากตัวสุดท้าย (เริ่มที่ 0) นั่นคือตัว Y)
ผลลัพธ์
TUVWXY
String Length ความยาวของสตริง
เราสามารถดึงค่าความยาวของสตริงได้โดยการใช้ฟังก์ชัน len() โดยมีรูปแบบการใช้งานดังนี้
len("string")หรือlen(variable)
ตัวอย่างการใช้งานฟังก์ชัน len()
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(len("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
print(len(x))String Methods เมธอดของสตริง
ในภาษาไพธอน มี built-in methods ของข้อมูลประเภทสตริงให้เราใช้งานจำนวนมาก เช่น
- เมธอด
strip()สำหรับตัดช่องว่าง whitespace ด้านหน้าและด้านหลังสตริง - เมธอด
lower()สำหรับแปลงอักขระภาษาอังกฤษให้เป็นตัวพิมพ์เล็ก - เมธอด
upper()สำหรับแปลงอักขระภาษาอังกฤษให้เป็นตัวพิมพ์ใหญ่
เมธอดของสตริงในภาษาไพธอนยังมีอีกมาก นี่เป็นเพียงตัวอย่างส่วนหนึ่งเท่านั้น
การตรวจสอบสตริงด้วยคีย์เวิร์ด in และ not in
เราสามารถตรวจสอบได้ว่า ในสตริงมีตัวอักขระหรือข้อความบางข้อความในสตริงนั้นหรือไม่ โดยใช้คีเวิร์ด in หรือ not in โดย
- คีย์เวิร์ด
inใช้ตรวจสอบว่ามีคำที่ต้องการอยู่ในตัวแปรหรือไม่ - คีย์เวิร์ด
not inใช้ตรวจสอบว่า ไม่มีคำที่ต้องการอยู่ในตัวแปรใช่หรือไม่
โดยจะให้ผลลัพธ์ออกมาเป็น True หรือ False ดังตัวอย่าง
x = "I am python programmer."
r = "python" in x
print(r)
m = "Python" in x
print(m)
n = "Python" not in x
print(n)- บรรทัดที่ 1 สร้างตัวแปร
xและกำหนดค่าเป็นสตริง - บรรทัดที่ 2 ใช้คีย์เวิร์ด
inตรวจสอบว่ามีคำว่า “python” อยู่ในตัวแปรxหรือไม่ - บรรทัดที่ 3 แสดงผลออกมาทางหน้าจอ ผลลัพธ์จะเป็น
Trueเพราะมีคำว่า “python” อยู่ในตัวแปรxจริง - บรรทัดที่ 4 ใช้คีย์เวิร์ด
inตรวจสอบว่า มีคำว่า “Python” อยู่ในตัวแปรxหรือไม่ - บรรทัดที่ 5 แสดงผลออกมา โดยผลลัพธ์จะเป็น
Falseเพราะไม่มีคำว่า “Python” อยู่ในตัวแปรxจริง (ตัวพิมพ์เล็กกับตัวพิมพ์ใหญ่ถือเป็นคนละตัวกัน) - บรรทัดที่ 6 ใช้คีย์เวิร์ด
not inตรวจสอบว่า ไม่มีคำว่า “Python” อยู่ในตัวแปรxใช่หรือไม่ - บรรทัดที่ 7 แสดงผลออกมา โดยผลลัพธ์จะเป็น
Trueเพราะไม่มีคำว่า “Python” อยู่ในตัวแปรxจริงๆ
True
False
True
String Concatenation การต่อสตริงหลาย ๆ สตริงเข้าด้วยกัน
เราสามารถต่อสตริงหลาย ๆ สตริงเข้าด้วยกันได้โดยการใช้เครื่องหมาย + โดยมีรูปแบบการใช้งานดังนี้
x = "www."
y = "dcrub"
z = ".com"
print(x + y + z)ผลลัพธ์
www.dcrub.com
String Format แทรกค่าจากตัวแปรอื่น ๆ เข้าไปในสตริง
โดยปกติ เราไม่สามารถนำข้อมูลชนิดสตริงกับข้อมูลชนิดตัวเลขมาต่อกันด้วยเครื่องหมาย + ได้ เพราะจะทำให้เกิด Error แต่เราสามารถใช้เมธอด format() แทรกข้อมูลชนิดตัวเลขเข้าไปในสตริงได้ โดยมีรูปแบบการใช้งานดังนี้
- แทรกเครื่องหมายวงเล็บปีกกาเข้าไปในสตริง ณ จุดที่ต้องการแทรกค่าตัวแปรอื่น ๆ เช่น
"Price of this product is {}"(แทรก{}ไว้หลังคำว่าisเพื่อจะนำราคามาใส่ทีหลัง) - ใช้เมธอด
format()สำหรับแทรกค่าจากตัวแปรอื่นเข้าไปในสตริงต้นทาง จะมีรูปแบบเป็นstr.format(v)เมื่อstrคือตัวแปรชนิดสตริง และvคือตัวแปรที่เก็บค่าตัวเลขที่เป็นราคาสินค้า
ตัวอย่างการใช้งานเมธอด format()
price = 4000
str = "Price of this product is {}"
print(str.format(price))- บรรทัดที่ 1 สร้างตัวแปร
priceเพื่อเก็บราคาสินค้า - บรรทัดที่ 2 สร้างตัวแปร
strเพื่อเก็บข้อความ พร้อมทั้งแทรกเครื่องหมาย{}สำหรับรับค่าจากตัวแปรpriceมาใช้งาน - บรรทัดที่ 3 เรียกใชัเมธอด
format()เพื่อแทรกค่าจากตัวแปรpriceเข้าไปในสตริงต้นทาง
ผลลัพธ์
Price of this product is 4000
เมธอด format() สามารถรับอากิวเมนต์ได้ไม่จำกัด นั่นก็หมายความว่า เราสามารถแทรกค่าเข้าไปในสตริงด้วยเมธอด format() อย่างไม่จำกัดจำนวน
ที่สำคัญคือ เราแทรกเครื่องหมาย {} เข้าไปในสตริงต้นทางกี่จุด เราต้องกำหนดอากิวเมนต์ให้เมธอด format() เป็นจำนวนเท่ากัน ดังตัวอย่าง
age = 35
year = 1985
str = "I am {} years old, I was born on {}"
print(str.format(age, year))ในตัวอย่าง เราแทรกเครื่องหมาย {} เข้าไปในสตริงต้นทาง 2 จุด และเรียกใช้เมธอด format() โดยระบุอากิวเมนต์ 2 ตัว ผลลัพธ์จะเป็นดังนี้
I am 35 years old, I was born on 1985
อย่างไรก็ตาม เพื่อความชัวร์ เราสามารถระบุอินเด็กซ์ไว้ในเครื่องหมาย {} เพื่อกำหนดให้ชัดลงไปเลยว่า ตรงนี้ให้นำอากิวเมนต์ตัวที่เท่านี้มาแทรก โดยตัวเลขระบุอินเด็กซ์จะเริ่มจากเลข 0 ดังตัวอย่าง
age = 35
year = 1985
str = "I am {0} years old, I was born on {1}"
print(str.format(age, year))จากตัวอย่าง เรากำหนดตัวเลขอินเด็กซ์ไว้ในเครื่องหมาย {} เพื่อระบุว่าให้นำอากิวเมนต์ตามเลขลำดับนี้มาแทรกในสตริง โดยตัวเลขอินเด็กซ์จะอ้างอิงตามอากิวเมนต์ที่เราระบุไว้ในเมธอด format เช่น str.format(age, year) ในที่นี้ age คืออากิวเมนต์ลำดับที่ 0 และ year คืออากิวเมนต์ลำดับที่ 1 ตามลำดับ
ผลลัพธ์
I am 35 years old, I was born on 1985
และเราสามารถแทรกตัวเลขอินเด็กซ์ในสตริงสับลำดับกับก็ได้ เช่น
age = 35
year = 1985
str = "I was born on {1}, Now I am {0} years old."
print(str.format(age, year))ผลลัพธ์
I was born on 1985, Now I am 35 years old.
Escape Character การแทรกอักขระพิเศษในสตริง
บางทีเราต้องการแทรกอักขระพิเศษในสตริง เช่น เครื่องหมาย "" เครื่องหมาย '' เครื่องหมาย \ เป็นต้น ถ้าเราแทรกอักขระเหล่านี้ลงไปตรง ๆ จะเกิด Error ขึ้นทันที
อย่างไรก็ตาม ทุกปัญหาย่อมมีทางออก เราสามารถแทรกอักขระพิเศษเหล่านั้นเข้าไปในสตริงได้โดยการทางเครื่องหมาย backslash (\) ไว้ด้านหน้า แล้วตามด้วยอักขระพิเศษเหล่านั้น เช่น ถ้าต้องการแทรกเครื่องหมาย " ก็ให้วาง backslash ไว้ก่อน แล้วค่อยตามด้วย " ซึ่งจะเป็นดังนี้ \"
ตัวอย่างการใช้งาน Escape Character
str = "He said that \"I\'m python programmer\""
print(str)ในตัวอย่าง เราวางเครื่องหมาย \ ไว้ด้านหน้าเครื่องหมาย " และเครื่องหมาย ' ที่อยู่ภายในสตริง ทำให้เครื่องหมายดังกล่าวสามารถแสดงผลภายในสตริงได้ ดังผลลัพธ์
He said that “I’m python programmer”
อักขระพิเศษอื่น ๆ ที่สามารถใช้ได้ในภาษาไพธอน
| โค้ด | ผลลัพธ์ |
| \’ | เครื่องหมาย ‘ |
| \” | เครื่องหมาย “ |
| \\ | เครื่องหมาย \ |
| \n | ขึ้นบรรทัดใหม่ New Line |
| \r | ขึ้นบรรทัดใหม่ Carriage Return |
| \t | แท็บ |
| \b | Backspace |
| \f | Form Feed |
| \ooo | เลขฐานแปด |
| \xhh | เลขฐานสิบหก |
เมธอดของสตริง
ข้อมูลประเภทสตริงในไพธอน มีเมธอดต่าง ๆ ให้ใช้งานดังนี้
| ชื่อเมธอด | คำอธิบาย |
| capitalize() | แปลงตัวอักษรตัวแรกให้เป็นตัวพิมพ์ใหญ่ |
| casefold() | แปลงข้อความในสตริงเป็นตัวพิมพ์เล็ก |
| center() | คืนค่าสตริงที่ข้อความถูกจัดให้อยู่กึ่งกลาง |
| count() | ตรวจสอบว่ามีคำที่ระบุปรากฏอยู่ในสตริงกี่ครั้ง |
| encode() | เข้ารหัสสตริง |
| endswith() | ตรวจสอบว่าสตริงลงท้ายด้วยอักขระที่ระบุหรือไม่ |
| expandtabs() | กำหนดขนาดแท็บในสตริง |
| find() | ค้นหาคำที่ระบุในสตริงแล้วคืนค่ากลับมาเป็นตำแหน่งที่ค้นเจอ |
| format() | จัดรูปแบบข้อความในสตริง |
| index() | ค้นหาคำที่ระบุในสตริงแล้วคืนค่ากลับมาเป็นตำแหน่งที่ค้นเจอ |
| isalnum() | ตรวจสอบว่าสตริงประกอบด้วยตัวอักษรภาษาอังกฤษและตัวเลขอารบิคหรือไม่ |
| isalpha() | ตรวจสอบว่าข้อความในสตริงเป็นตัวอักษรภาษาอังกฤษทั้งหมดหรือไม่ |
| isdecimal() | ตรวจสอบว่าสตริงประกอบด้วยตัวเลขทั้งหมดหรือไม่ |
| isdigit() | ตรวจสอบว่าสตริงประกอบด้วยตัวเลขทั้งหมดหรือไม่ |
| isidentifier() | ตรวจสอบว่าสตริงเป็น identifier หรือไม่ |
| islower() | ตรวจสอบว่าอักขระทั้งหมดในสตริงเป็นตัวอักษรพิมพ์เล็กหรือไม่ |
| isnumeric() | ตรวจสอบว่าอักขระในสตริงเป็นตัวเลขทั้งหมดหรือไม่ |
| isprintable() | ตรวจสอบว่าอักขระในสตริงเป็นอักขระที่สามารถแสดงผลได้ทั้งหมดหรือไม่ |
| isspace() | ตรวจสอบว่าอักขระในสตริงเป็นช่องว่างทั้งหมดหรือไม่ |
| istitle() | ตรวจสอบว่าแต่ละคำในสตริงขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่หรือไม่ |
| isupper() | ตรวจสอบว่าตัวอักษรในสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมดหรือไม่ |
| join() | รวมข้อมูลแบบรายการเข้าด้วยกัน |
| ljust() | จัดข้อมูลในสตริงให้ชิดซ้าย |
| lower() | แปลงตัวอักษรในสตริงเป็นตัวพิมพ์เล็ก |
| lstrip() | ตัดช่องว่างด้านซ้ายของสตริง |
| partition() | แบ่งข้อความในสตริงออกเป็น 3 ส่วน |
| replace() | แทนที่ข้อความในสตริง |
| rfind() | ค้นหาตำแหน่งของอักขระหรือข้อความที่ระบุ ที่ปรากฏในสตริงเป็นครั้งสุดท้าย |
| rindex() | ค้นหาตำแหน่งของอักขระหรือข้อความที่ระบุ ที่ปรากฏในสตริงเป็นครั้งสุดท้าย |
| rjust() | จัดข้อความในสตริงให้อยู่ชิดขวา |
| rpartition() | แบ่งสตริงออกเป็น 3 ส่วนแล้วคืนค่ากลับมาเป็น Tuple |
| rsplit() | แยกข้อความในสตริงแล้วคืนค่ากลับมาเป็น List |
| rstrip() | ตัดอักขระหรือช่วงว่างทางด้านขวาของสตริง |
| split() | แยกข้อความในสตริงแล้วคืนค่ากลับมาเป็น List |
| splitlines() | แยกข้อความในสตริงด้วยอักขระขึ้นบรรทัดใหม่แล้วคืนค่ากลับมาเป็น List |
| startswith() | ตรวจสอบว่าสตริงขึ้นต้นด้วยอักขระหรือข้อความที่ระบุหรือไม่ |
| strip() | ตัดอักขระด้านหน้าและด้านหลังของสตริง |
| swapcase() | สลับตัวอักษรพิมพ์เล็กพิมพ์ใหญ่ |
| title() | แปลงตัวอักษรตัวแรกของทุก ๆ คำในสตริงเป็นตัวพิมพ์ใหญ่ |
| upper() | แปลงตัวอักษรทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่ |
| zfill() | แทรกเลข 0 ด้านหน้าสตริงจนครบความยาวที่กำหนด |
| format_map() | จัดรูปแบบตัวอักษรในสตริง |
| maketrans() | คืนค่าเป็นตารางการแปลสำหรับใช้ในการแปล |
| translate() | คืนค่าสตริงที่ถูกแปลเรียบร้อยแล้ว |
