Python - การประมวลผลข้อมูลที่ไม่มีโครงสร้าง
ข้อมูลที่มีอยู่แล้วในรูปแบบแถวและคอลัมน์หรือซึ่งสามารถแปลงเป็นแถวและคอลัมน์ได้อย่างง่ายดายเพื่อให้สามารถใส่ลงในฐานข้อมูลได้ดีในภายหลังเรียกว่าข้อมูลที่มีโครงสร้าง ตัวอย่างเช่นไฟล์ CSV, TXT, XLS เป็นต้นไฟล์เหล่านี้มีตัวคั่นและความกว้างคงที่หรือตัวแปรโดยที่ค่าที่หายไปจะแสดงเป็นช่องว่างระหว่างตัวคั่น แต่บางครั้งเราได้รับข้อมูลโดยที่เส้นไม่ได้มีความกว้างคงที่หรือเป็นเพียงไฟล์ HTML รูปภาพหรือ pdf ข้อมูลดังกล่าวเรียกว่าข้อมูลที่ไม่มีโครงสร้าง แม้ว่าไฟล์ HTML จะสามารถจัดการได้โดยการประมวลผลแท็ก HTML แต่ฟีดจาก twitter หรือเอกสารข้อความธรรมดาจากฟีดข่าวสามารถทำได้โดยไม่ต้องมีตัวคั่น แต่ไม่มีแท็กให้จัดการ ในสถานการณ์เช่นนี้เราใช้ฟังก์ชันที่สร้างขึ้นที่แตกต่างกันจากไลบรารี python ต่างๆเพื่อประมวลผลไฟล์
การอ่านข้อมูล
ในตัวอย่างด้านล่างเราใช้ไฟล์ข้อความและอ่านไฟล์โดยแยกแต่ละบรรทัดออกจากกัน ต่อไปเราสามารถแบ่งผลลัพธ์ออกเป็นบรรทัดและคำต่อไป ไฟล์ต้นฉบับเป็นไฟล์ข้อความที่มีบางย่อหน้าที่อธิบายภาษา python
filename = 'path\input.txt'
with open(filename) as fn:
# Read each line
ln = fn.readline()
# Keep count of lines
lncnt = 1
while ln:
print("Line {}: {}".format(lncnt, ln.strip()))
ln = fn.readline()
lncnt += 1
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้
Line 1: Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.
Line 2: Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.
Line 3: Python interpreters are available for many operating systems. CPython, the reference implementation of Python, is open source software and has a community-based development model, as do nearly all of its variant implementations. CPython is managed by the non-profit Python Software Foundation.
การนับความถี่ของคำ
เราสามารถนับความถี่ของคำในไฟล์ได้โดยใช้ฟังก์ชันตัวนับดังนี้
from collections import Counter
with open(r'pathinput2.txt') as f:
p = Counter(f.read().split())
print(p)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้
Counter({'and': 3, 'Python': 3, 'that': 2, 'a': 2, 'programming': 2, 'code': 1, '1991,': 1, 'is': 1, 'programming.': 1, 'dynamic': 1, 'an': 1, 'design': 1, 'in': 1, 'high-level': 1, 'management.': 1, 'features': 1, 'readability,': 1, 'van': 1, 'both': 1, 'for': 1, 'Rossum': 1, 'system': 1, 'provides': 1, 'memory': 1, 'has': 1, 'type': 1, 'enable': 1, 'Created': 1, 'philosophy': 1, 'constructs': 1, 'emphasizes': 1, 'general-purpose': 1, 'notably': 1, 'released': 1, 'significant': 1, 'Guido': 1, 'using': 1, 'interpreted': 1, 'by': 1, 'on': 1, 'language': 1, 'whitespace.': 1, 'clear': 1, 'It': 1, 'large': 1, 'small': 1, 'automatic': 1, 'scales.': 1, 'first': 1})