Page 108 - python
P. 108
82
ื
7.10 การสบคนขอมูลรายชื่อวิทยานิพนธ 10,000 รายการ
ในหัวขอนี้แสดงตัวอยางการโหลดไฟลรายชื่อวิทยานิพนธจากเว็บไซตและทําการแยกแตละ
รายการดวยเครื่องหมายขึ้นตนบรรทัดใหม ("\n") จากนั้นใชคําสั่ง filter เพื่อกรองคําคน และแสดงผลลัพธ
รายชื่อวิทยานิพนธ ที่ผานการสืบคน
ตัวอยางที่ 7.11 การสืบคนขอมูลรายชื่อวิทยานิพนธ
import urllib, urllib.request
url = "http://dsdi.msu.ac.th/programming/thailis-10000.txt"
s = urllib.request.urlopen(url).read().decode('utf-8', 'ignore').split("\n")
q = "การสืบสาน"
result = list(filter(lambda a:q in a,s))
print("พบ '%s' ทั้งหมด %d เลม"%(q,len(result)))
for i in range(len(result)):
print("%d) %s"%(i+1,result[i]))
ผลลัพธ :
พบ 'การสืบสาน' ทั้งหมด 8 เลม
1) การสืบสานการทอผาพื้นเมืองของชุมชน ตําบลหาดเสี้ยว อําเภอศรีสัชนาลัย จังหวัดสุโขทัย
2) การสืบสานและอนุรักษวัฒนธรรมประเพณีของกลุมชาติพันธุชาวอาขาที่เอื้อตอเยาวชนอาขา :
กรณีศึกษาเยาวชนอาขา หมูบานอาโยะใหม ตําบลแมสลองใน อําเภอแมฟาหลวง จังหวัดเชียงราย
3) มหาวิทยาลัยราชภัฏ : การสืบสานพระราชปณิธาน
4) การสืบสานวัฒนธรรมทองถิ่นของสภาวัฒนธรรมจังหวัดขอนแกน
5) วิธีคิดและบทบาทการสืบสานวัฒนธรรมของปราชญทองถิ่น กรณีศึกษา นายสาร สาระทัศนานันท
ี
ํ
ั
ั
ํ
ุ
ั
ั
6) บทบาทของวดกบการสืบสานวัฒนธรรม กรณศึกษาวัดพระบาทภูพานคา อาเภออบลรตน จงหวัด
ขอนแกน
7) เพลงพื้นบานราชบุรีกับการสืบสานมรดกทางวัฒนธรรม
8) การสืบสานภูมิปญญากระติบขาวลายขางกระแตแบบดั้งเดิมไทยอสานเชิงฟสิกส
ี
ตัวอยางที่ 7.11 ไฟล thailis-10000.txt เก็บรายชื่อวิทยานิพนธจํานวน 10,000 เลม เก็บไวที่ลิงค
http://dsdi.msu.ac.th/programming/ อานเนื้อไฟลเขามาเกบในตัวแปร s โดยถอดรหัสเปน utf-8
็
ถาพบขอความที่โหลดไมไดให ignore จากนั้นแยกดวยเครื่องหมายขนตนบรรทัดใหม ("\n") จะไดตัวแปร
ึ้
s เก็บรายชื่อวิทยานิพนธ 10,000 เลม
คําสั่ง list(filter(lambda a:q in a,x)) เปนการกรองใหเหลือเฉพาะรายการที่มีคําวา "การสืบ
สาน" และเก็บผลลัพธไวในตัวแปร result จากนั้นพมพจํานวนผลลัพธจากการสืบคนดวย len(result)
ิ
ิ
จากนั้นแสดงรายการผลลัพธ โดยวนรอบจาก 0 ถึง ควายาวของผลลัพธ len(result) ในแตละรอบพมพ
ดวยคําสั่ง print("%d) %s"%(i+1,result[i])) เมื่อ i+1 คือ ลําดับของผลลัพธที่พบเริ่มจากลําดับที่ 0 จึงให
เพิ่มคาดวย 1 เพื่อแสดงหมายเลขลําดับของผลการสืบคน