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() | คืนค่าสตริงที่ถูกแปลเรียบร้อยแล้ว |