การปรับแต่งข้อมูล (Modify) ข้อความ (Strings) ในภาษา Python

ในภาษา Python นั้น ข้อความ (String) เป็นข้อมูลประเภท Immutable ซึ่งหมายความว่าไม่สามารถเปลี่ยนแปลงข้อมูลภายในได้โดยตรง แต่สามารถแก้ไขได้โดยสร้างข้อมูล String ใหม่ขึ้นมาใหม่จากข้อมูล String เดิม

การเปลี่ยนตัวอักษรใน String

การเปลี่ยนตัวอักษรในข้อความ (strings) ให้เป็นตัวพิมพ์ใหญ่ (uppercase) ในภาษา Python สามารถทำได้โดยใช้เมธอด upper() ซึ่งจะเปลี่ยนตัวอักษรทั้งหมดใน string ให้เป็นตัวพิมพ์ใหญ่ทั้งหมดดังตัวอย่างต่อไปนี้:

string = "hello world"
uppercase_string = string.upper()

print(uppercase_string)

ผลลัพธ์ที่ได้จะเป็น “HELLO WORLD” เนื่องจากทุกตัวอักษรในข้อความถูกเปลี่ยนเป็นตัวพิมพ์ใหญ่ทั้งหมด

HELLO WORLD

การใช้ตัวพิมพ์เล็ก (lowercase) เป็นการเปลี่ยนตัวอักษรในข้อความให้กลายเป็นตัวพิมพ์เล็กทั้งหมด ซึ่งในภาษา Python สามารถทำได้โดยใช้ method lower() ดังนี้

string = "Hello, World!"
lowercase_string = string.lower()
print(lowercase_string)

ผลลัพธ์ที่ได้จะเป็น “hello, world!” เนื่องจากทุกตัวอักษรในข้อความถูกเปลี่ยนเป็นตัวพิมพ์เล็กทั้งหมด

hello, world!

 

ในตัวอย่างข้างต้น ตัวแปร string เป็นข้อความ “Hello, World!” จากนั้นเราใช้ method lower() เพื่อแปลงข้อความในตัวแปรนี้ให้กลายเป็นตัวพิมพ์เล็ก แล้วเก็บผลลัพธ์ในตัวแปร lowercase_string จากนั้นแสดงผลลัพธ์ที่ได้ด้วยคำสั่ง print() ผลลัพธ์ที่ได้คือ “hello, world!”

การเพิ่มสมาชิกใน String

เราสามารถเพิ่มสมาชิกใน String ได้โดยใช้ตัวดำเนินการบวก (+) เพื่อรวม String และ String กัน หรือใช้เครื่องหมาย *= เพื่อทำการทำซ้ำสมาชิกใน String หลาย ๆ ครั้ง

ตัวอย่าง:

# การเพิ่มสมาชิกใน String ด้วยตัวดำเนินการบวก (+)
greeting = "Hello, "
name = "John"
message = greeting + name
print(message) # Output: "Hello, John"

# การทำซ้ำสมาชิกใน String ด้วยเครื่องหมาย *=
message = "spam" * 3
print(message) # Output: "spamspamspam"

การลบสมาชิกใน String

เราไม่สามารถลบสมาชิกใน String โดยตรงได้ แต่เราสามารถสร้าง String ใหม่โดยใช้ข้อมูลใน String เดิมและไม่รวมสมาชิกที่ต้องการลบ

ตัวอย่าง:

# การลบสมาชิกใน String โดยการสร้าง String ใหม่โดยไม่รวมสมาชิกที่ต้องการลบ
message = "Hello, John"
new_message = message.replace("John", "")
print(new_message) # Output: "Hello, "

การแทนที่ข้อมูลใน String

เราสามารถแทนที่สมาชิกใน String ด้วยข้อมูลอื่น ๆสามารถใช้ method replace() เพื่อแทนที่ข้อความใน string ได้

ตัวอย่าง:

text = "Hello, World!"
new_text = text.replace("World", "Python")
print(new_text)

Output:

Hello, Python!

โดยในตัวอย่างนี้ replace() จะแทนที่คำว่า “World” ด้วย “Python” ใน string text แล้วเก็บผลลัพธ์ในตัวแปร new_text โดยค่าเดิมของ text ยังไม่เปลี่ยนแปลง โดย replace() method จะ return string ใหม่ที่แทนที่ค่าเดิมโดยไม่เปลี่ยนแปลงค่าเดิม 

การแยก Split ข้อมูลในข้อความ (String)

การแยก (Split) ข้อมูลในข้อความ (string) ในภาษา Python คือ การแยกข้อความให้กลายเป็นรายการ (list) โดยใช้ตัวคั่นเป็นตัวแบ่งระหว่างข้อความ เช่น ช่องว่าง (” “), เครื่องหมายจุลภาค (“,”) หรือเครื่องหมายอื่น ๆ

การแยกข้อความในภาษา Python ใช้ฟังก์ชัน split() ซึ่งจะรับข้อความเป็นอาร์กิวเมนต์และคืนค่าออกมาเป็นรายการของคำศัพท์ที่แยกออกมาจากข้อความ ตัวอย่างการใช้งานแบบพื้นฐานดังนี้

text = "apple banana orange"
fruits = text.split()   # แยกข้อความด้วยช่องว่าง
print(fruits)           # ['apple', 'banana', 'orange']

ในตัวอย่างด้านบน split() ไม่ได้ระบุตัวแบ่งไว้ ดังนั้นฟังก์ชัน split() จะใช้ช่องว่างเป็นตัวแบ่งเอง

สามารถระบุตัวแบ่งให้กับฟังก์ชัน split() ได้โดยระบุตัวแบ่งเป็นอาร์กิวเมนต์ของฟังก์ชัน เช่น

text = "apple,banana,orange"
fruits = text.split(",")  # แยกข้อความด้วยเครื่องหมายจุลภาค
print(fruits)             # ['apple', 'banana', 'orange']

ในตัวอย่างนี้เรากำหนดให้ฟังก์ชัน split() ใช้เครื่องหมายจุลภาค , เป็นตัวแบ่ง

ฟังก์ชัน split() เป็นฟังก์ชันที่ใช้แยกข้อความเป็นส่วนๆ โดยใช้ตัวแบ่งหรือ delimiter เป็นหลัก และคืนค่าเป็น list ของส่วนที่แยกออกมา ดังนั้นหากข้อความมีรูปแบบเฉพาะ หรือเป็นข้อความยาวๆ ซึ่งไม่สามารถใช้ delimiter ที่มีรูปแบบเดียวกันได้ตลอดเวลา จึงต้องใช้วิธีการอื่นในการแยกข้อความออกเป็นส่วนๆ

การแยกข้อความยาวๆหรือข้อความที่มีรูปแบบเฉพาะ นั้น ต้องใช้วิธีการต่างๆ ขึ้นอยู่กับลักษณะของข้อความเป็นหลัก โดยมีวิธีการแบบหลายแบบ เช่น

  1. ใช้ re.split() จาก module re โดยใช้ Regular Expression เป็น delimiter เพื่อแยกข้อความ
import re
text = "The quick brown fox jumps over the lazy dog"
words = re.split('\W+', text)
print(words)
# Output: ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']

  1. ใช้ string method ต่างๆ เช่น splitlines(), partition(), rsplit() ฯลฯ เพื่อแยกข้อความเป็นส่วนๆ ตามลักษณะของข้อความ ตัวอย่างเช่น
text = "The quick\nbrown\tfox\rjumps\vover\fthe lazy dog"
words = text.split()  # ใช้ split() แบบไม่ระบุ delimiter จะแยกข้อความโดยอัตโนมัติ
lines = text.splitlines()
tabs = text.split('\t')

โดย splitlines() จะแยกข้อความเป็นส่วนๆ โดยพิจารณาตัวขึ้นบรรทัดในข้อความ (newline character) เป็น delimiter

การใช้งานฟังก์ชัน split() นอกจากสามารถใช้ในการแยกข้อความตามช่องว่างแล้ว ยังสามารถใช้กับข้อความยาวๆ หรือข้อความที่มีรูปแบบในลักษณะที่กำหนดเองได้ด้วย โดยใช้พารามิเตอร์เพิ่มเติมในฟังก์ชัน split() นั่นคือ sep ซึ่งจะกำหนดลักษณะของตัวแบ่งข้อความ

ตัวอย่างเช่น หากต้องการแยกข้อความที่มีลักษณะคล้ายๆ กับ CSV ด้วยเครื่องหมายจุลภาค , สามารถใช้ฟังก์ชัน split() โดยกำหนด sep เป็นเครื่องหมาย , ได้เช่นกัน ดังตัวอย่างต่อไปนี้

data = "John,Doe,33,New York"
result = data.split(",")
print(result)

Output:

['John', 'Doe', '33', 'New York']

นอกจากนี้ ยังสามารถกำหนดพารามิเตอร์ maxsplit เพื่อกำหนดจำนวนการแยกข้อความสูงสุดที่ต้องการได้ ดังตัวอย่างต่อไปนี้

data = "John Doe 33 New York"
result = data.split(maxsplit=2)
print(result)

Output:

['John', 'Doe', '33 New York']

ในตัวอย่างนี้ maxsplit ถูกกำหนดเป็น 2 ดังนั้นฟังก์ชัน split() จะแยกข้อความเป็นสามส่วน โดยแยกตัวแรกและตัวที่สองตามช่องว่าง และข้อความต่อมาจะถูกคืนค่าในส่วนสุดท้ายแบบเต็มๆ ไม่ได้ถูกแยกต่อ ดังนั้นผลลัพธ์ที่ได้คือ ['John', 'Doe', '33 New York']