ข้อมูลประเภท String และ List เป็นสิ่งที่พบเจอและต้องจัดการบ่อยที่สุด ดังนั้นเราจะมาลงรายละเอียดวิธีการจัดการ และคำสั่งพื้นฐานที่เอาไว้ทำงานกับ String และ List กันครับ
สารบัญ
คำสั่งพื้นฐานที่ใช้กับ String
- นับข้อมูล
- len(myString) เพื่อนับว่ามีกี่อักขระ (นี่เหมือน LEN ใน Excel )
- จัดการพิมพ์เล็กพิมพ์ใหญ่
- myString.lower() ทำเป็นตัวพิมพ์เล็ก (นี่ก็เหมือน LOWER ใน Excel)
- myString.upper() ทำเป็นตัวพิมพ์ใหญ่ (นี่ก็เหมือน UPPER ใน Excel)
- ค้นหาข้อมูล
- “ra” in myString หาว่ามีคำว่า ra หรือไม่ โดยให้ผลเป็น True/False (อันนี้ Excel ไม่มี)
- myString.find(“ra”) หาว่ามีคำว่า ra อยู่ index ไหน (เริ่มที่ 0) ถ้าหาไม่เจอจะได้ค่า -1 (อันนี้เหมือน FIND ใน excel)
- myString.find(“ra”,3,9) หาว่ามีคำว่า ra อยู่ index ไหน โดยเริ่มหาตั้งแต่ index 3 แต่ไม่ถึง 9 ถ้าหาไม่เจอจะได้ค่า -1
- กำจัดส่วนเกิน
- myString.strip() ตัดช่องว่างด้านหน้าและหลังออกทั้งหมด (คล้าย TRIM ใน Excel แต่ strip ตัดแค่หน้าหลัง แต่ TRIM ทำให้ตรงกลางเหลือเคาะเดียวด้วย)
- myString.strip(“. /,”) ตัด character ที่ระบุ (dot space slash comma )ด้านหน้าและหลังออกทั้งหมด
- แยกส่วนคำ
- myString.split() แยกคำออกเป็น list ด้วยตัวแบ่งคือ space โดยแยกไม่จำกัดครั้ง
- myString.split(“/”, 1) แยกคำออกเป็น list ด้วยตัวแบ่งคือ / โดยแยกแค่ 1 ครั้ง (กลายเป็น 2 item)
- ถ้าเอาบางส่วนของข้อความ ให้ใช้การ slice index เอา เช่น myString[0:3] คือเอา 3 ตัวแรก (คล้าย LEFT)
คำสั่ง format
ปกติแล้ว หากเราจะเชื่อมตัวเลขกับข้อความด้วย + มันจะโวยวายทันที เพราะเป็นข้อมูลคนละประเภทกัน…
แต่ถ้าเราใช้ format มาช่วย ทุกอย่างจะง่ายขึ้นมาก เช่น
name = "Sira"
age = 37
weight = 68
height = 170
txt = "ผมชื่อ {} ตอนนี้อายุ {} ปี .. หนัก {} kg สูง {} cm"
print(txt.format(name,age,weight,height))
คำสั่งพื้นฐานที่ใช้กับ List
อันนี้อาจจะไม่ค่อยเหมือนใน Excel เท่าไหร่เนอะ มาดูกันว่ามีอะไรบ้าง
- นับข้อมูล
- len(myList) คือ นับจำนวน item ใน list
- myList.count(“Eren”) รับคำว่า Eren ใน list ว่ามีกี่ตัว
- การเพิ่มข้อมูล
- myList.append(“Sira”) คือ เพิ่มคำว่า Sira เข้าไปต่อท้าย list
- myList.insert(1, “Sira”) คือ เพิ่มคำว่า Sira เข้าไปที่ index ที่ 1 (กลายเป็นตัวที่ 2)
- myList.extend(anotherList) เพิ่ม item ใน List อีกอันคือ anotherList เข้าไปต่อท้าย myList
- นอกจาก extend แล้ว จะใช้เครื่องหมาย + ไปเลยก็ยังได้ เช่น myList + anotherList ซึ่งเขียนง่ายกว่า
- ลบข้อมูล
- myList.remove(“Sira”) คือ ลบคำว่า Sira ออกจาก List (เอาออกทีละตัว จากตัวแรกไปตัวหลัง)
- myList.pop(1) คือ เอา item ที่อยู่ index 1 ออกไป (ถ้าไม่ระบุ index จะเอาตัวสุดท้ายออกไป)
- เรียงข้อมูล
- myList.sort() คือ เรียงข้อมูลใน list จากน้อยไปมาก (สนใจพิมพ์เล็กพิมพ์ใหญ่)
- myList.sort(key = str.lower) เรียงจากน้อยไปมาก (ไม่สนใจพิมพ์เล็กพิมพ์ใหญ่ เพราะทำให้เป็นตัวพิมพ์เล็กแล้ว)
- myList.sort(reverse = True) คือ เรียงข้อมูลใน list จากมากไปน้อย (สนใจพิมพ์เล็กพิมพ์ใหญ่)
- mylist.reverse() = เรียงกลับด้านจาก list ดั้งเดิม
- รวมข้อมูลใน List ด้วยตัวคั่น
- ตัวคั่น.join(list) คือ รวมข้อมูลใน List ให้กลายเป็น string คำเดียว โดยคั่นด้วยตัวคั่นที่ระบุ คล้ายๆ กับ TEXTJOIN ใน Excel เลย
ลองเอามาประยุกต์กับการ Loop
พอเราเริ่มรู้คำสั่งต่างๆ ในการทำงานกับ String และList พอผนวกกับเรื่องวน Loop และ if เราก็จะทำเรื่องต่างๆ ได้มากขึ้น เช่น
ถ้าใน list มีคำที่ไม่มีตัว i ให้ลบทิ้งด้วย remove ซะ โดยใช้ for loop และ if ช่วยเช็คเงื่อนไขที่ต้องการก็ได้
myList = ["Eren", "Mikasa", "Armin", "Levi"]
for x in myList:
if "i" not in x: #ถ้าคำนั้นไม่มีตัว i
myList.remove(x) # ให้ลบคำนั้นซะ
print (myList)
ใช้ for loop ทำให้ข้อมูลใน List เป็นตัวพิมพ์ใหญ่ทั้งหมด ด้วย upper() โดยเอาผลลัพธ์ไปสร้างเป็น List ใหม่อีกอันนึงด้วย append
myList = ["Eren", "Mikasa", "Armin", "Levi"]
NewList=[] #สร้าง List ว่างเปล่า
for x in myList:
NewList.append(x.upper()) #ทำให้ item เป็นตัวพิมพ์ใหญ่ แล้วใส่ต่อท้ายเข้าไปใน list ใหม่
print (NewList)
หรือจะใช้ผสมกับเงื่อนไข if ก็ได้ เช่น จะเอาไปเป็น item ใน List ใหม่เฉพาะ item ที่มีตัว i อยู่เท่านั้น
myList = ["Eren", "Mikasa", "Armin", "Levi"]
NewList=[]
for x in myList:
if "i" in x: #ใส่เงื่อนไขว่าเอาเฉพาะที่มีตัว i
NewList.append(x.upper())
print (NewList)
เรื่องของเรื่องคือ หากเราต้องการสร้าง List ใหม่จาก List เดิม นอกจากจะเขียนด้วยวิธีใช้ for loop แล้ว ยังมีอีกวิธีที่ทำได้ และเขียน Code ได้สั้นและกระชับกว่า นั่นก็คือ วิธีที่เรียกว่า List Comprehension
List Comprehension
List Comprehension มีวิธีการเขียนดังนี้
[expression for item in list if condition] #ส่วน if condition ไม่ใส่ก็ได้
เช่น ในตัวอย่างการแปลงเป็นตัวพิมพ์ใหญ่ เราสามารถเขียนสูตรสั้นๆ แบบนี้ได้เลย
myList = ["Eren", "Mikasa", "Armin", "Levi"]
NewList=[x.upper() for x in myList] #List Comprehension
print (NewList)
หรือ ถ้าจะเอาเฉพาะที่มีตัว i เราก็ไปใส่เงื่อนไขใน if condition ได้เลย
myList = ["Eren", "Mikasa", "Armin", "Levi"]
NewList=[x.upper() for x in myList if "i" in x] #List Comprehension แบบมีเงื่อนไข
print (NewList)
แต่ถ้ากรณีมีเงื่อนไข else ด้วย จะเขียนอีกลักษณะนึง คือ เอา if else ขึ้นมาก่อน ดังนี้
[expression_if_true if condition else expression_if_false for item in list ]
เช่น ถ้ามี i ให้ทำ upper ถ้าไม่มี i ให้ทำ lower
myList = ["Eren", "Mikasa", "Armin", "Levi"]
#List Comprehension แบบมี if else
NewList=[ x.upper() if "i" in x else x.lower() for x in myList ]
print (NewList)
ลองดูตัวอย่างการผสมผสานหลายๆ เรื่อง เช่น Split คำจากประโยคยาวๆ แล้วเอามาเฉพาะคำที่มีตัว e แบบ trim . ดูบ้าง
วิธีการอ้างอิงข้อความยาวๆ แบบชัวร์ๆ คือใส่ใน Quote 3 ชั้น ดังนี้ (เอาประโยคมาจาก Wiki ของคำว่า Excel)
myParagraph = '''Microsoft Excel is a spreadsheet developed by Microsoft for Windows, macOS, Android and iOS.
It features calculation, graphing tools, pivot tables, and a macro programming language called Visual Basic for Applications.
It has been a very widely applied spreadsheet for these platforms, especially since version 5 in 1993,
and it has replaced Lotus 1-2-3 as the industry standard for spreadsheets.
Excel forms part of the Microsoft Office suite of software.'''
myList=myParagraph.split() #แยกคำด้วยช่องว่าง
print(myList)
print(len(myList))
selectedWord=[x.strip(".") for x in myList if "e" in x.lower()] #เอาที่มีตัว e และตัด . หัวท้ายออก
print(selectedWord)
print(len(selectedWord))
หวังว่าๆ เพื่อนๆ คงจะพอเห็นภาพการทำงานกับ String และ List มากขึ้นนะครับ
ตอนต่อไป
เนื้อหาตอนต่อไป ได้เวลาเรียนรู้เรื่องเกี่ยวกับการสร้างฟังก์ชันขึ้นมาใช้เอง รับรองว่าเป็นความสามารถที่เจ๋งมากๆ เลยล่ะ!
สารบัญ Series Python
- หัดเขียนโปรแกรม Python สำหรับคนเป็น Excel มาก่อน : ตอนที่ 1
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 2 – ประเภทข้อมูล (Data Types)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 5 – การสร้างฟังก์ชันขึ้นมาใช้เอง (Function)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 6 – การเรียกใช้ Module / Packages เจ๋งๆ ที่มีคนสร้างไว้แล้ว
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 7 – Web Scraping ด้วย Beautiful Soup
- แนวทางการใช้ Python ใน Power BI
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 8 – การสร้างกราฟด้วย Matplotlib
- รวม Link สอน Python / Programming / AI/ Machine Learning แบบฟรีๆ
- สอนใช้ Python ใน Excel ตอนที่ 1 : ลองใช้ครั้งแรก
- สอนใช้ Python ใน Excel ตอนที่ 2 : List, Loop, Condition
- สอนใช้ Python ใน Excel ตอนที่ 3 : Regular Expression (RegEx)
- สอนใช้ Python ใน Excel ตอนที่ 4 : สร้างฟังก์ชันใช้เอง
- สอนใช้ Python ใน Excel ตอนที่ 5 : สร้างกราฟ Visualization เบื้องต้นด้วย Matplotlib
- การวิเคราะห์ข้อมูลเบื้องต้นด้วย Python: เริ่มต้นด้วย Pandas และ Matplotlib
- เพิ่มยอดขายด้วย Market Basket Analysis : วิเคราะห์คู่สินค้าขายดีด้วย Python
Leave a Reply