บทนำ
แสดงวิธีแยกข้อมูล/ฟิลด์จากสตริงที่มีรูปแบบคงที่ สองวิธี: ใช้ split แบบmanual และใช้โมดูล parse
ข้อมูลตัวอย่าง
Report: Daily_Report - Time: 2020-10-10T12:30:59.000000 - Player: Federer - Titles: 20 - Country: Switzerland
วิธี 1: ใช้ split
- แยกด้วย delimiter
" - "ได้ฟิลด์ต่างๆ - แยกแต่ละฟิลด์ด้วย
":"เพื่อเอาค่าจริง - แปลง timestamp ด้วย
datetime.fromisoformat
def parse_function(log):
fields = log.split(' - ')
name, time, player, titles, _ = fields
formatted_name = name.split(':')[1]
formatted_player = player.split(':')[1]
formatted_titles = int(titles.split(':')[1])
new_time = time.split(': ')[1]
return f"{formatted_name} , {new_time}, {formatted_player} , {formatted_titles}"
วิธี 2: ใช้โมดูล parse (ต้องติดตั้ง: pip install parse)
- สร้าง template ตามรูปแบบ:
'Report: {name} - Time: {time} - Player: {player} - Titles: {titles} - Country: {country}' - เรียก
parse(template, log)ได้ dict ของค่าทั้งหมด
from parse import parse
template = 'Report: {name} - Time: {time} - Player: {player} - Titles: {titles} - Country: {country}'
data = parse(template, report)
print(data['name'], data['time'], data['player'], data['titles'], data['country'])
สรุป
แนะนำให้ใช้โมดูล parse เพราะเขียน template ได้ชัดเจน ลดโค้ดและอ่านง่ายกว่า split แบบ manual