Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีดึงข้อมูลที่ต้องการจากสตริงที่มีโครงสร้างใน Python

บทนำ

แสดงวิธีแยกข้อมูล/ฟิลด์จากสตริงที่มีรูปแบบคงที่ สองวิธี: ใช้ split แบบmanual และใช้โมดูล parse

ข้อมูลตัวอย่าง

Report: Daily_Report - Time: 2020-10-10T12:30:59.000000 - Player: Federer - Titles: 20 - Country: Switzerland

วิธี 1: ใช้ split

  1. แยกด้วย delimiter " - " ได้ฟิลด์ต่างๆ
  2. แยกแต่ละฟิลด์ด้วย ":" เพื่อเอาค่าจริง
  3. แปลง 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)

  1. สร้าง template ตามรูปแบบ: 'Report: {name} - Time: {time} - Player: {player} - Titles: {titles} - Country: {country}'
  2. เรียก 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