
เขียนโปรแกรมภาษา Python ตอนที่ 14 ข้อมูลชนิด String
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)

หรือจะใช้เป็นเครื่องหมายซิงเกิ้ลโควทครอบแทนก็ได้ เช่น ”’ข้อความที่ต้องการกำหนด”’
x = '''Line 1, Line 2, Line 3, Line 4, Line 5''' print(x)

สตริงก็คืออาเรย์ 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

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

Negative Indexing เข้าถึงข้อมูลโดยอินเด็กซ์ที่ติดลบ
เราสามารถเข้าด้วยข้อมูลในสตริงอาเรย์โดยใช้ slice syntax ด้วยการระบุช่วงข้อมูลด้วยตัวเลขอินเด็กซ์ที่ติดลบได้ จะเป็นการเริ่มนับอินเด็กซ์จากอักขระตัวสุดท้าย ตัวอย่างเช่น
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" print(x[-7:-1])
- บรรทัดที่ 1 สร้างตัวแปร x ขึ้นมา แล้วกำหนดค่าให้เป็นสตริง “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
- บรรทัดที่ 2 เข้าถึงข้อมูลในสตริงแบบ slice syntax โดยระบุค่าอินเด็กซ์ติดลบ ในตัวอย่างระบุค่าเริ่มต้นเป็น -7 (หมายถึง ตัวอักขระตัวที่ 7 นับมาจากตัวสุดท้าย นั่นคือตัว T) และระบุค่าสิ้นสุดเป็น -1 (หมายถึง ตัวอักขระตัวที่ 1 นับจากตัวสุดท้าย (เริ่มที่ 0) นั่นคือตัว Y)
ผลลัพธ์

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 จริงๆ

String Concatenation การต่อสตริงหลาย ๆ สตริงเข้าด้วยกัน
เราสามารถต่อสตริงหลาย ๆ สตริงเข้าด้วยกันได้โดยการใช้เครื่องหมาย + โดยมีรูปแบบการใช้งานดังนี้
x = "www." y = "dcrub" z = ".com" print(x + y + z)
ผลลัพธ์

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 เข้าไปในสตริงต้นทาง
ผลลัพธ์

เมธอด format() สามารถรับอากิวเมนต์ได้ไม่จำกัด นั่นก็หมายความว่า เราสามารถแทรกค่าเข้าไปในสตริงด้วยเมธอด format() อย่างไม่จำกัดจำนวน
ที่สำคัญคือ เราแทรกเครื่องหมาย {} เข้าไปในสตริงต้นทางกี่จุด เราต้องกำหนดอากิวเมนต์ให้เมธอด format() เป็นจำนวนเท่ากัน ดังตัวอย่าง
age = 35 year = 1985 str = "I am {} years old, I was born on {}" print(str.format(age, year))
ในตัวอย่าง เราแทรกเครื่องหมาย {} เข้าไปในสตริงต้นทาง 2 จุด และเรียกใช้เมธอด format() โดยระบุอากิวเมนต์ 2 ตัว ผลลัพธ์จะเป็นดังนี้

อย่างไรก็ตาม เพื่อความชัวร์ เราสามารถระบุอินเด็กซ์ไว้ในเครื่องหมาย {} เพื่อกำหนดให้ชัดลงไปเลยว่า ตรงนี้ให้นำอากิวเมนต์ตัวที่เท่านี้มาแทรก โดยตัวเลขระบุอินเด็กซ์จะเริ่มจากเลข 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 ตามลำดับ
ผลลัพธ์

และเราสามารถแทรกตัวเลขอินเด็กซ์ในสตริงสับลำดับกับก็ได้ เช่น
age = 35 year = 1985 str = "I was born on {1}, Now I am {0} years old." print(str.format(age, year))
ผลลัพธ์

Escape Character การแทรกอักขระพิเศษในสตริง
บางทีเราต้องการแทรกอักขระพิเศษในสตริง เช่น เครื่องหมาย “” เครื่องหมาย ” เครื่องหมาย \ เป็นต้น ถ้าเราแทรกอักขระเหล่านี้ลงไปตรง ๆ จะเกิด Error ขึ้นทันที
อย่างไรก็ตาม ทุกปัญหาย่อมมีทางออก เราสามารถแทรกอักขระพิเศษเหล่านั้นเข้าไปในสตริงได้โดยการทางเครื่องหมาย backslash (\) ไว้ด้านหน้า แล้วตามด้วยอักขระพิเศษเหล่านั้น เช่น ถ้าต้องการแทรกเครื่องหมาย ” ก็ให้วาง backslash ไว้ก่อน แล้วค่อยตามด้วย ” ซึ่งจะเป็นดังนี้ \”
ตัวอย่างการใช้งาน Escape Character
str = "He said that \"I\'m python programmer\"" print(str)
ในตัวอย่าง เราวางเครื่องหมาย \ ไว้ด้านหน้าเครื่องหมาย ” และเครื่องหมาย ‘ ที่อยู่ภายในสตริง ทำให้เครื่องหมายดังกล่าวสามารถแสดงผลภายในสตริงได้ ดังผลลัพธ์

อักขระพิเศษอื่น ๆ ที่สามารถใช้ได้ในภาษาไพธอน
โค้ด | ผลลัพธ์ |
\’ | เครื่องหมาย ‘ |
\” | เครื่องหมาย “ |
\\ | เครื่องหมาย \ |
\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() | คืนค่าสตริงที่ถูกแปลเรียบร้อยแล้ว |