เรียนรู้การพัฒนาซอฟต์แวร์ด้วยภาษา Python ตอน Strings

โปรแกรมส่วนใหญ่แล้วต้องมีการรับข้อมูลจากผู้ใช้หรือสิ่งแวดล้อมอื่นมาเก็บไว้ในตัวแปร ประเภทของข้อมูลที่จะมาทำความรู้จักกันในตอนนี้คือ "String"

"String"  หากดูความหมายในพจนานุกรมแล้วจะหมายถึง เชือก เส้นเชือก บรรทัดหรือแถว ฯล ในความหมายของ Python แล้วข้อมูลประเภทนี้คือ แถวหรือสายของตัวอักษร โดยจะต้องมีเครื่องหมาย " หรือ ' ครอบ เช่น

"This is a string"
'This is a string'
'1,3,4,7,9'
"@#)!@+*&_ $   "

สำหรับ Python  แล้วอนุญาตให้ใช้ " และ '  ในข้อมูลชุดเดียวกันได้ เช่น

"I told my friends that 'Python' is a good language" หรือ
'I told my friends that "Python" is a good language'

เราทำอะไรกับ String ได้บ้าง (ที่ใช้บ่อย)

1.  หาความยาวของข้อความ

ใช้ len() เพื่อหาความยาวของข้อความหรือตัวแปรที่เก็บข้อมูล String ที่ต้องการ เช่น

>>>len("Hello World")
>>> 11

>>>a = "Happy New Year 2016"
>>>print len(a)
>>>19

ค่าที่ได้จะเป็นจำนวนตัวอักษร (รวมเครื่องหมายวรรคตอน) ในข้อความนั้น ๆ

2. การต่อข้อความ (Concatenation)

ช้เครื่องหมาย + ในการต่อข้อความได้ ในกรณีนี้เราเรียก + ว่า concatenation operator เช่น

>>> "I love "+"you"
>>> "I love you"

>>> txt = "This text is "
>>> txt = txt + "empty"
>>> print txt
>>> This text is empty

3. Indexing หรือ subscripting

ทุกตัวอักษรในข้อมูล String จะมีตัวเลขตำแหน่งของตัวเองอยู่  โดยตัวเลขดังกล่าวจะเขียนไว้ใน []  (subscript operator) ตัวเลขนี้เริ่มต้นที่ 0 หมายถึงอักษรตัวแรกหรือซ้ายมือสุดแล้วไล่เรียงไปเรื่อย ๆ จนถึงอักษรตัวสุดท้ายจะมีหมายเลขตำแหน่งเท่ากับ ความยาวข้อความ - 1

>>> txt = "I love you"
>>> first_char_indx =  txt[0]
>>> print first_char_indx
>>> I

>>> txt = "I love you"
>>> last_char_indx = len(txt) - 1
>>> print txt[last_char_indx]
>>> u

ตัวเลขตำแหน่งสามารถเป็นตัวเลขลบได้ ซึ่งจะหมายถึงการนับตำแหน่งจากอักษรตัวสุดท้ายมายังอักษรตัวแรก  เช่น

>>> name = "Somchai"
>>>print name[-1]
>>>i

>>> name = "Somchai"
>>>print name[-7]
>>>S

หากเราต้องการหาค่า index ของตัวอักษรหรือกลุ่มตัวอักษรภายใน String ใช้

String.index(characters)  

หากใน String นั้นมีอักษรหรือกลุ่มตัวอักษรที่ซ้ำกับที่เราต้องการมากกว่า 1 ตำแหน่ง Python จะให้ค่าตำแหน่งที่น้อยที่สุด

>>>txt = "Foreign travellers"
>>>print txt.index("t")
>>>8

>>>txt = "Foreign travellers"
>>>print txt.index("ll")
>>>13


4.   Slice 

จะเหมือนกับ indexing ต่างกันตรงที่ slice จะมีการกำหนด lower bound และ upper bound ของ index ไว้ด้วย และคั่นด้วยเครื่องหมาย : ผลลัพธ์ของ slice จะได้กลุ่มของตัวอักษร รูปแบบทั่วไปของ slice คือ

String[lower bound index : upper bound index]

โดยตัวอักษรที่มี index ตรงกับ upper bound index จะไม่มีการนำมาใช้




เช่น

>>>txt = "Foreign travellers"
>>>txt_slice = txt[0:]
>>>print txt_slice
>>>Foreign travellers

อธิบาย 
txt[0:]  กำหนด lower bound index คือ 0 คือ อักษรตัวแรก ไม่มีกำหนด upper bound ไว้ หมายถึงให้ใช้ตำแหน่งของอักษรตัวสุดท้าย

>>>txt = "Foreign travellers"
>>>txt_slice = txt[:len(txt) - 1]
>>>print txt_slice
>>>Foreign travellers

อธิบาย 
txt[:len(txt) - 1]  มีการละ lower bound index ไว้ จะใช้ตำแหน่งอักษรตัวแรกคือ 0 แทน  กำหนด upper bound เป็น len(txt) - 1 หมายถึงให้ใช้ตำแหน่งของอักษรตัวสุดท้าย


>>>txt = "Foreign travellers"

>>>txt_slice = txt[3:6]

>>>print txt_slice
>>>eig

อธิบาย 
txt[3:6]  กำหนด lower bound index คือ 3 (ตำแหน่งอักษรตัวที่ 4 )  กำหนด upper bound เป็น 6  หมายถึงให้ใช้ตำแหน่งของอักษรตัวสุดท้าย


5. Upper case และ Lower case 

เป็นการเปลี่ยนให้เป็นอักษรตัวใหญ่และเล็ก โดยใช้ upper() และ lower() ตามลำดับ เช่น 

>>>txt = "Foreign travellers"
>>>print txt.upper()
>>>FOREIGN TRAVELLERS

>>>txt = "Foreign travellers"
>>>print txt.lower()
>>>foreign travellers

6. การแยกกลุ่มตัวอักษร (Split)

การแยกกลุ่มตัวอักษรภายใน String ต้องการตัวอักษรหรือกลุ่มตัวอักษรเพื่อใช้เป็นตัวคั่นระหว่างกลุ่ม

String.split(delimiter)

ใช้ " " (วรรค) เป็น delimiter

>>>txt = "Foreign travellers"
>>>a  = txt.split(" ")
>>>print a
>>>['Foreign','travellers']

ใช้ "e"  เป็น delimiter

>>>txt = "Foreign travellers"
>>>a  = txt.split("e")
>>>print a
>>>['For','ign trav','ll','rs']


ใช้ "s"  เป็น delimiter

>>>txt = "Foreign travellers"
>>>a  = txt.split("e")
>>>print a
>>>['Foreign traveller','']

ข้อสังเกตุ : ตัว delimiter จะไม่แสดงในผลลัพธ์


7. Stipping Whitespace

บ่อยครั้งที่อาจจะมีช่องว่างหรือ Whitespace มาอยู่ที่หัวหรือท้ายของ String จะด้วยสาเหตุใดก็แล้วแต่ ซึ่งอาจส่งผลต่อการทำงานบางอย่าง เช่น การเปรียบเทียบข้อควา หรือการนับจำนวนตัวอักษร

String.strip()  การ Strip ทั้งหัวและท้าย
String.rstrip() การ Strip ทางด้านขวาสุด
String.lstrip() การ Strip ทางด้านซ้ายสุด

 เช่น

>>>a = " python "
>>>b =  a.strip()
>>>c = a.rstrip()
>>>d = a.lstrip()
>>>print len(a)
>>>print len(b)
>>>print len(c)
>>>print len(d)
>>>8
>>>6
>>>7
>>>7

8. การทำ Title
ในการพิมพ์ชื่อด้วยอักษรภาษาอังกฤษอักษรตัวแรกจะเป็นอักษรตัวใหญ่เสมอ ใน Python เรียกว่าการทำ title เราสามารถทำ title ได้ด้วย

String.title()

เช่น
>>> name = "john legend"
>>> print name.title()
>>> John Legend


9. การรับข้อมูลจากผู้ใช้

ในภาษา Python มี raw_input() เพื่อใช้เก็บข้อมูลจากผู้ใช้ผ่านหน้าจอ ข้อมูลที่ได้จะเป็นอยู่ในรูปของ String เช่น

>>> user_in = raw_input("Enter Name :")
>>> print user_in

10. อื่น ๆ อีกมากมาย

ยังมีการทำงานกับ String อีกเยอะแยะที่ไม่ได้กล่าวถึง ท่านที่สนใจว่ามีอะไรอีกบ้างและมี Python  IDE ไว้แล้ว (ในกรณีที่ใช้ Linux จะมี Python IDE ติดตั้งมาเรียบร้อยแล้ว) สามารถพิมพ์คำสั่ง

>>> dir(str)

เพื่อดูว่ามีอะไรที่เกี่ยวกับ String อีก

แบบฝึกหัด


1. ใชัตัวแปรเก็บชื่อของเพื่อน (ใช้อักษรภาษาอังกฤษ) แล้วพิมพ์ข้อความ
"Hello <ตัวแปร> . How do you think about Python ? "

2. เก็บ ชื่อ, ที่อยู่ ไว้ในตัวแปรแยกกัน แล้วพิมพ์ข้อมูลออกมาในรูปแบบคล้ายนามบัตร



Previous
Next Post »