» การประกาศตัวแปรสตริง » เครื่องหมาย Single และ Double Quote ( ' , " ) » เครื่องหมาย Single/Double Quote สามตัว » การเข้าถึงสมาชิกย่อยภายในสตริง » การตรวจสอบขนาดความยาวของสตริง » การวนเข้าไปในสตริง » การเข้าถึงข้อมูลบางส่วนในสตริง » การตรวจสอบข้อความภายในสตริง » เครื่องหมาย Escape Sequence » การประกาศตัวแปรชนิดลีสต์ » ตำแหน่งสมาชิกย่อยภายในลีสต์ » การเข้าถึงสมาชิกภายในลีสต์ » ขนาดของลีสต์ » การวนเข้าไปอ่านค่าภายในลีสต์ » การเข้าถึงสมาชิกตัวแปรลีสต์ด้วยอินเด็กซ์ » การเข้าถึงสมาชิกย่อยภายในลีสต์ » การเข้าถึงสมาชิกในลีสต์แบบช่วง » ฟังก์ชั่นสำหรับตัวแปรลีสต์ การเรียงลำดับข้อมูล การรีเวิร์ส การนับคีย์เวิร์ด การลบสมาชิก การบวกลีสต์ การคูณลีสต์ การเข้าถึงเลขอินเด็กซ์ของข้อมูลภายในลีสต์ » การแยกข้อมูลในตัวแปรสตริงเป็นตัวแปรลีสต์ด้วยคำสั่ง split » การเปิดแฟ้มข้อมูล ด้วยคำสั่ง open » โหมดการใช้งานแบบ read, write, append » แฟ้มข้อมูลแบบไบนารีและเท็กซ์โหมด » ใบงาน 1 : การเขียนคำว่า “สวัสดีชาวโลก” ลงในแฟ้มข้อมูล » ใบงาน 2 : การอ่านข้อความในแฟ้มข้อมูลออกมาเก็บไว้ในตัวแปรและแสดงผล » ใบงาน 3 : การอ่านและเขียนไฟล์แบบ binary » ใบงาน 4 : การเขียนไฟล์แบบ Append » ใบงาน 5 : การสกัดข้อมูลด้วยคำสั่ง split » ใบงาน 6 : การอ่านข้อมูลจากเว็บไซต์และสกัดข้อมูลภายในแท็ก < title > ออกมา » ใบงาน 7 : การอ่านเนื้อเพลงคาราโอเก๊ะในเว็บและสกัดชื่อเพลง นักร้อง และเนื้อเพลงออกมาจาก Unstructured Document » ใบงาน 8 : การเขียน ชื่อเพลง นักร้องและเนื้อเพลงลงบนไฟล์ในฮาร์ดดีสก์ » ใบงาน 9 : การอ่านรายละเอียดเพลง นักร้องและเนื้อเพลงภายในแฟ้มข้อมูลออกมาแสดงผล » ใบงาน 10 : การสกัดรายชื่อนิสิตออกมาจากสตริงและเก็บเป็นตัวแปรลีสต์ นำมาเรียงลำดับและเก็บผลลัพธ์ลงในแฟ้มข้อมูล » ใบงานที่ 11 : อ่านแฟ้มข้อมูลใบงานในข้อ 10 และแสดงผลลัพธ์ » ใบงาน 12 : การดึงข้อมูลจาก Wikipedia เก็บไว้ในตัวแปรสตริงและแสดงผล » คำถามท้ายบทเรียน
ตัวแปรชนิดสตริงใช้เก็บข้อความ สามารถประกาศด้วยเครื่องหมาย double quote (") และ single quote(')
1. การเปิดปิดข้อความด้วยเครื่องหมาย คำพูด (quote) เช่น a = "Google Gmail Youtube" 2. การเปิดปิดข้อความด้วยเครื่องหมาย single quote เช่น a = 'Google Gmail Youtube'
การเปิดปิดด้วย triple quote เช่น a = """Google Gmail Youtube""" หรือ a = '''Google Gmail Youtube''' จงตอบคำถามว่า ประกาศตัวแปรสตริงถูกต้องหรือไม่ ?
a = "It's hot today." b = 'It's hot today.' c = """It's hot today.""" d = '''It's hot today.'''
1) เลขบวก เป็นการเข้าถึงสมาชิกจากซ้ายไปขวา 2) เลขลบ เป็นการเข้าถึงสมาชิกจากขวามาซ้าย 3) การเข้าถึงสมาชิกแบบช่วง ให้ระบุเลขลำดับเริ่มต้นและลำดับปลายทาง โดยคั่นด้วยเครื่องหมาย colon ( : ) เช่น a = "Google"; a[1:3] จะได้ค่า "oo" เป็นต้น
การตรวจสอบความยาวใช้ฟังก์ชั่น len() โดยส่งอาร์กิวเมนต์ให้กับฟังก์ชั่น len() ด้วยสตริงที่ต้องการนับความยาว เช่น len("Google Gmail Youtube") ผลลัพธ์เท่ากับ 20 ตัวอักษร
การวนเข้าไปในสตริงจะเข้าไปทีละตัวอักษร เช่น
t = "Google" for i in t: print(i, i*2, i*3, i*4)
ผลลัพธ์ G GG GGG GGGG o oo ooo oooo o oo ooo oooo g gg ggg gggg l ll lll llll e ee eee eeee
การเข้าถึงสมาชิกแบบช่วง ให้ระบุเลขลำดับเริ่มต้นและลำดับปลายทาง โดยคั่นด้วยเครื่องหมาย colon ( : ) เช่น a = "Google"; a[1:3] จะได้ค่า "oo" เป็นต้น
คำสั่ง in ใช้ตรวจสอบว่ามีข้อความในสตริง เช่น "oo" in "google" ผลลัพธ์ คือ True เพราะมีสตริง "oo" อยู่ในสตริง "google"
เครื่องหมาย Escape Sequence คือ เครื่องหมายที่ต้องการเขียนอักขระพิเศษลงในข้อความ เช่น \t หมายถึง แท็บ \0 หมายถึง อักขระ NULL (ว่างเปล่า) \’ หมายถึง อักขระ ' \" หมายถึง อักขระ " \\ หมายถึง อักขระ \ \n หมายถึง ขึ้นบรรทัดใหม่
a = "Google\tYoutube" print(a)Google Youtube
b = "Google\nYoutube" print(b) Google Youtube
c = "It's hot today." print(c)It's hot today.
d = 'It\'s hot today.' print(d)It's hot today.
อาร์เรย์ อาร์เรย์ คือ การประกาศตัวแปรด้วยชื่อเดียวกันและเข้าถึงสมาชิกด้วยหมายเลขดัชนี (index) การประกาศตัวแปรลีสต์ใช้เครื่องหมาย backet ([ ]) เปิดปิดมีรูปแบบคือ ชื่อตัวแปร = [ ข้อมูล, ข้อมูล, ข้อมูล ]
ตำแหน่งสมาชิกย่อยในลีสต์ 1) เลขบวก เป็นการเข้าถึงตำแหน่งสมาชิกจากซ้ายไปขวา 2) เลขลบ เป็นการเข้าถึงตำแหน่งสมาชิกจากขวามาซ้าย 3) การเข้าถึงตำแหน่งสมาชิกแบบช่วง ให้ระบุเลขลำดับเริ่มต้นและลำดับปลายทาง โดยคั่นด้วยเครื่องหมาย colon ( : ) เช่น a = [1,2,3,4,5]; a[1:3] จะได้ค่า [2,3] เป็นต้น
การตรวจสอบขนาดของลีสต์ใช้คำสั่ง len() เช่น x = [3, 2, 5] เมื่อต้องการทราบขนาดของลีสต์ใช้คำสั่ง len(x) มีผลลัพธ์เท่ากับ 3
การวนเข้าไปในตัวแปรลีสต์ ใช้คำสั่ง for ดังนี้
x = [3, 2, 5] for i in x: print(i, i*2, i*4, i**2)
3 6 12 9 2 4 8 4 5 10 20 25
การเข้าถึงสมาชิกด้วยเลขอินเด็กซ์ ใช้คำสั่ง index() ดังนี้
z = ["Google", "Gmail", "Youtube"] idx = z.index("Youtube") print(idx) 2 print(z[idx]) Youtube
การเข้าถึงสมาชิกแบบช่วง ให้ระบุเลขลำดับเริ่มต้นและลำดับปลายทาง โดยคั่นด้วยเครื่องหมาย colon ( : ) เช่น a = [1,2,3,4,5]; a[1:3] จะได้ค่า [2,3] เป็นต้น
a = [5, 3, 6, 7, 2] print(a) # ผลลัพธ์ คือ .............................. print(a[0]) # ผลลัพธ์ คือ .............................. print(a[-1]) # ผลลัพธ์ คือ .............................. b = [ 'Google', 'Gmail', 'Youtube' ] print(b) # ผลลัพธ์ คือ .............................. print(b[0]) # ผลลัพธ์ คือ .............................. print(b[-1]) # ผลลัพธ์ คือ .............................. print(b[-2]) # ผลลัพธ์ คือ .............................. c = [ "Google", 3, "Gmail", 8 ] print(b) # ผลลัพธ์ คือ .............................. print(b[0]) # ผลลัพธ์ คือ .............................. print(b[-1]) # ผลลัพธ์ คือ .............................. print(b[-2]) # ผลลัพธ์ คือ .............................. z = [ a, b, c ] print(z[0]) # ผลลัพธ์ คือ .............................. print(z[-1]) # ผลลัพธ์ คือ .............................. print(z[1]) # ผลลัพธ์ คือ .............................. print(z[-2]) # ผลลัพธ์ คือ .............................. m = list(range(13)) print(m[0]) # ผลลัพธ์ คือ .............................. print(m[4]) # ผลลัพธ์ คือ .............................. print(m[1:2]) # ผลลัพธ์ คือ .............................. print(m[2:4]) # ผลลัพธ์ คือ ..............................
x = [ 30, 20, 15, 18, 14, 12 ] print(x) # ผลลัพธ์ คือ .............................. x.sort() print(x) # ผลลัพธ์ คือ ..............................
คำสั่ง max() และ min() ใช้สำหรับหาค่าที่สูงสูงสุดและต่ำสุดในตัวแปรลีสต์
x = [ 30, 20, 15, 18, 14, 12 ] print(max(x)) # ผลลัพธ์ คือ .............................. print(min(x)) # ผลลัพธ์ คือ ..............................
คำสั่ง len() ใช้สำหรับหาขนาดของตัวแปรลีสต์
x = [ 30, 20, 15, 18, 14, 12 ] print(len(x)) # ผลลัพธ์ คือ ..............................
คำสั่ง count() ใช้สำหรับหาขนาดของตัวแปรลีสต์
x = [ 5, 3, 4, 1, 3, 2, 4, 2, 4, 5, 4, 1, 1, 5 ] print(x.count(3)) # ผลลัพธ์ คือ .............................. print(x.count(5)) # ผลลัพธ์ คือ .............................. print(x.count(1)) # ผลลัพธ์ คือ .............................. print(len(x)) # ผลลัพธ์ คือ ..............................
คำสั่ง sum() ใช้สำหรับคำนวณผลรวมภายในตัวแปรลีสต์ ใช้สำหรับกรณีที่ตัวแปรในลีสต์เป็นค่าตัวเลขเท่านั้น
x = [ 5, 3, 4, 1, 3, 2, 4, 2, 4, 5, 4, 1, 1, 5 ] print(sum(x)) # ผลลัพธ์ คือ ..............................
การแยกข้อความออกเป็นส่วน ๆ ใช้คำสั่ง split() โดยอาร์กิวเมนต์ที่ป้อนเข้าไปคือ ข้อความที่ใช้ในการแยกสตริงออกจากกัน พิจารณาคำสั่งต่อไปนี้
a = "Google Gmail Youtube" b = a.split(" ") print(b) ['Google', 'Gmail', 'Youtube'] print(b[0]) # ผลลัพธ์ คือ .............................. print(b[-1]) # ผลลัพธ์ คือ ..............................
โปรแกรมตัดคำภาษาไทยมีอยู่หลายตัว อาทิ kucut , swatch, lexitron , deepcut และ pythainlp ในหัวข้อนี้จะใช้ไลบรารี่ pythainlp มีขั้นตอนดังนี้ 1. ติดตั้ง pythainlp บน colab ด้วยคำสั่ง !pip install pythainlp 2. หลักการตัดคำใน pythainlp มีหลายตัว ได้แก่ icu, dict, longest-matching, mm, newmm, pylexto, deepcut, wordcutpy ศึกษาเพิ่มเติมในวิชา information retrieval หมายเหตุ : mm (Maximum Matching) คือ การจับคู่ที่ยาวที่สุด
from pythainlp import word_tokenize t = "เด็กเอ๋ยเด็กน้อยความรู้เรายังด้อยเร่งศึกษาเมื่อเติบใหญ่เราจะได้มีวิชาเป็นเครื่องหาเลี้ยงชีพสำหรับตน" a = word_tokenize(text, engine='newmm') print(a) ผลลัพธ์ : ['เด็ก', 'เอ๋ย', 'เด็กน้อย', 'ความรู้', 'เรา', 'ยัง', 'ด้อย', 'เร่ง', 'ศึกษา', 'เมื่อ', 'เติบใหญ่', 'เรา', 'จะ', 'ได้', 'มี', 'วิชา', 'เป็น', 'เครื่อง', 'หาเลี้ยงชีพ', 'สำหรับ', 'ตน']
ฟังก์ชั่น set() เป็นฟังก์ชั่นสำหรับกำจัดอิลิเมนต์ที่ซ้ำกันออกไป โดยผลลัพธ์ของฟังก์ชั่นนี้จะมีชนิดเป็นตัวแปรเซ็ต พิจารณาตัวอย่างต่อไปนี้
a = ['เด็ก', 'เอ๋ย', 'เด็กน้อย', 'ความรู้', 'เรา', 'ยัง', 'ด้อย', 'เร่ง', 'ศึกษา', 'เมื่อ', 'เติบใหญ่', 'เรา', 'จะ', 'ได้', 'มี', 'วิชา', 'เป็น', 'เครื่อง', 'หาเลี้ยงชีพ', 'สำหรับ', 'ตน'] b = set(a) print(b) {'วิชา', 'เครื่อง', 'เอ๋ย', 'ด้อย', 'เมื่อ', 'ความรู้', 'เติบใหญ่', 'จะ', 'เด็ก', 'เป็น', 'หาเลี้ยงชีพ', 'ศึกษา', 'สำหรับ', 'ได้', 'มี', 'ตน', 'ยัง', 'เรา', 'เร่ง', 'เด็กน้อย'}
ตอบคำถามต่อไปนี้ 1. ฟังก์ชั่น set() ทำหน้าที่อะไร ? 2. z = set([3,2,1,1,1,2,3,2,3]) ตัวแปร z จะมีสมาชิกกี่ตัว อะไรบ้าง ?
- แฟ้มข้อมูล (file) ใช้เก็บข้อมูลในระบบดิจิทัล เช่น ไฟล์ mp3, word, pdf, mp4 ฯลฯ - การเปิดไฟล์เพื่ออะไร ? ตอบ ก) เพื่ออ่านข้อมูลภายในไฟล์ (read) ข) เพื่อเขียนข้อมูลลงไฟล์ (write) - โหมดของการเปิดไฟล์แบ่งเป็น ก) r คือ อ่าน เช่น open("ชื่อไฟล์","r").read() ข) w คือ เขียน เช่น open("ชื่อไฟล์","w").write("สวัสดีชาวโลก") ค) rb คือ อ่านแบบไบนารี เช่น x = open("ชื่อไฟล์","rb").read() ง) wb คือ เขียนแบบไบนารี เช่น open("ชื่อไฟล์","wb").write(x) จ) a คือ เขียนต่อท้ายไฟล์ เช่น open("ชื่อไฟล์","a").write("ข้อมูลที่เขียนต่อท้ายไฟล์")
with open('files/files.txt', encoding='utf-8') as f: for i in f: if "ทส" in i: print(i)
ในระบบปฏิบัติการอื่น ๆ จะใช้ข้อมูลแบบไบนารี ยกเว้นระบบปฏิบัติการวินโดวส์ใช้ข้อมูลแบบเท็กซ์โหมด หลักการของเท็กซ์โหมดคือ เมื่อพบสัญลักษณ์ขึ้นต้นบรรทัดใหม่ (\n) จะเพิ่มสัญลักษณ์ (\r) เข้าไป พิจารณาตัวอย่างต่อไปนี้
data = "a\nb\nc\nd\n" open("d:/textfile.txt","w").write(data) open("d:/binaryfile.txt","wb").write(data)
จงตอบคำถามต่อไปนี้ 1. ขนาดไฟล์ textfile.txt มีขนาดกี่ไบต์ 2. ขนาดไฟล์ binaryfile.txt มีขนาดกี่ไบต์ 3. อธิบายเหตุผลที่ เท็กซ์ไฟล์มีขนาดใหญ่กว่าไบนารีไฟล์ ? 4. ถ้าเขียนเท็กซ์ไฟล์ในระบบปฏิบัติการลินุกซ์และ Mac OSx ขนาดไฟล์เท็กซ์ไฟล์และไบนารีจะมีขนาดต่างกันหรือไม่ ?
ไลบรารี่ wikipedia-API ใช้สำหรับสกัดข้อความ , ส่วนต่าง ๆ ในหน้าวิกิ, ลิงค์, หมวดหมู่ (category), การแปลเนื้อหาภาษาอื่น ๆ จากเอกสารวิกิพีเดีย มีวิธีการใช้งานดังนี้ 1. การติดตั้ง ใช้คำสั่งต่อไปนี้ !sudo pip install wikipedia !sudo pip install wikipedia-api
2. การใช้งาน
import wikipedia as wiki wiki.set_lang("th") data = wiki.summary("โลก", sentences=1) print(data) โลก (บาลี: loka; อังกฤษ: world) มีความหมายโดยปริยายหมายถึงหมู่มนุษย์ รวมทั้งอารยธรรมมนุษย์โดยรวมทั้งหมด โดยเฉพาะในด้านประสบการณ์ ประวัติศาสตร์ หรือสภาพของมนุษย์โดยทั่ว ๆ ไป ทั้งนี้ คำว่า ทั่วโลก หมายถึงสถานที่ใด ๆ บนดาวเคราะห์โลกในทางปรัชญามองโลกอยู่ 2 แบบ
ในภาษา python เวอร์ชั่น 3 ใช้คำสั่ง urlopen ดังนี้
import urllib.request x = urllib.request.urlopen('http://dsdi.msu.ac.th').read() output = x.decode('utf-8') print(output)
การเข้ารหัสภาษาไทยต้องดูที่ซอร์สโค๊ดของ HTMl ว่าเข้ารหัสเป็นอะไร โดยดูจากแท็ก เมื่อ xxx คือการเข้ารหัสตัวอักษรแบบต่าง ๆ 1) เข้ารหัสด้วย TIS-620 หรือ windows-874 ให้ถอดรหัสด้วยคำสั่ง import urllib.request x = urllib.request.urlopen('https://tdc.thailis.or.th/tdc/browse.php?option=show&browse_type=title&titleid=5').read().decode('cp874', 'ignore') 2) เข้ารหัสด้วย UTF-8 ให้ถอดรหัสด้วยคำสั่ง import urllib.request x = urllib.request.urlopen('http://dsdi.msu.ac.th').read().decode('utf-8', 'ignore') print(x)
- สกัดข้อมูลในส่วนของ Title และ Title Alternative ของวิทยานิพนธ์ออกมาจากฐานวิทยานิพนธ์ไทยลีสต์ เช่น ลิงค์ https://tdc.thailis.or.th/tdc/browse.php?option=show&browse_type=title&titleid=5 - ส่วนของ Title คือคำว่า "การศึกษาสภาพและปัญหาการจัดการศึกษาระดับก่อนประถมศึกษาขององค์การบริหารส่วนตำบลในจังหวัดสุพรรณบุรี" - ส่วนของ Title Alternative คือ คำว่า "A STUDY OF STATE AND PROBLEMS OF EDUCATION MANAGEMENT IN PRE-PRIMARY EDUCATION LEVEL OF SUBDISTRICT ADMINISTRATION ORGANIZATION IN SUPHANBURI PROVINCE"
ตัวอย่าง : การดึงข้อมูลจากฐานข้อมูลวิทยานิพนธ์ไทยลีสต์
import urllib.request x = urllib.request.urlopen('https://tdc.thailis.or.th/tdc/browse.php?option=show&browse_type=title&titleid=5').read() t = x.decode('utf-8','ignore')
import urllib.request t = urllib.request.urlopen('https://www.sanook.com/music/song/OOfyeYu4KNNePlfoRwXQPg==/').read().decode('utf-8') z = t.split('Written by:")[-1] z = z.split("***เนื้อเพลงจากที่อื่น***")[0] z = z.replace(" "," ") z = z.replace("","\n") content = z.split("\n") for i in content[3:]: print(i)
» ตัวแปรสตริงและลีสต์และไฟล์
» การสกัดคำภาษาไทย
» ไม่พบกิจกรรมการเรียนในสัปดาห์นี้ กรุณาตรวจสอบเวลา : วันนี้ คือ วันที่ 14-11-2024