เทพเอ็กเซล ช่วย "ปลุกเทพ Excel ในตัวคุณ"
0
  • No products in the cart.
Python

หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List

Python String และ List

ข้อมูลประเภท 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 )ด้านหน้าและหลังออกทั้งหมด
      หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 1
  • แยกส่วนคำ
    • 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))
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 2

คำสั่งพื้นฐานที่ใช้กับ 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)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 3

ใช้ 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)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 4

หรือจะใช้ผสมกับเงื่อนไข 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)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 5

เรื่องของเรื่องคือ หากเราต้องการสร้าง 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)
python list comprehension

หรือ ถ้าจะเอาเฉพาะที่มีตัว i เราก็ไปใส่เงื่อนไขใน if condition ได้เลย

myList = ["Eren", "Mikasa", "Armin", "Levi"]
NewList=[x.upper() for x in myList if "i" in x]  #List Comprehension แบบมีเงื่อนไข
print (NewList)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 6

แต่ถ้ากรณีมีเงื่อนไข 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)
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 7

ลองดูตัวอย่างการผสมผสานหลายๆ เรื่อง เช่น 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))
หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List 8

หวังว่าๆ เพื่อนๆ คงจะพอเห็นภาพการทำงานกับ String และ List มากขึ้นนะครับ

ตอนต่อไป

เนื้อหาตอนต่อไป ได้เวลาเรียนรู้เรื่องเกี่ยวกับการสร้างฟังก์ชันขึ้นมาใช้เอง รับรองว่าเป็นความสามารถที่เจ๋งมากๆ เลยล่ะ!

แชร์ความรู้ให้เพื่อนๆ ของคุณ
  • 830
  •  
  •  
  •  
  •  
  • 830
  •  
  •  
  •  
  •  
Sira Ekabut
the authorSira Ekabut
• Microsoft Office Specialist : Excel ระดับ Expert • ก่อตั้งเว็บไซต์และ แฟนเพจเทพเอ็กเซล คนติดตาม 8 หมื่นคน+, คลิปวีดีโอ 1 ล้าน Views + • หนังสือ Best Seller คอมพิวเตอร์ : Excel Level Up! , จอมเวท เทพ Excel , Excel Power Up!วิทยากรใน SkillLane.com คอร์สออนไลน์ชั้นนำ / อบรม Excel ให้บริษัทชั้นนำ

Leave a Reply