簡體   English   中英

使用python使用正則表達式在多個變量字段中拆分字符串

[英]Splitting string in multiple variable fields using regex using python

我有一個數據框,某列的每一行都是來自某些格式錯誤的格式的文本,其中每個“字段”都在“字段標題”之后,例如:

山口
姓名:鮑勃姓氏:羅斯頭銜:畫家年齡:34
姓氏:艾薩克姓名:牛頓頭銜:硬幣檢查員年齡:42
年齡:20 頭銜:飛行員姓名:傑克
這是一些垃圾文本名稱:John 姓氏:Doe

例如,這些字段可以按任何順序排列,其中一些字段可能不存在。

我需要做的是解析字段,以便第二行變成這樣:

{'Name': 'Isaac','Surname': 'Newton',...}

雖然我可以處理“pythonic 部分”,但我認為應該使用一些正則表達式來完成解析(也因為行數為數千),但我不知道如何設計它。

嘗試:

x = df["col"].str.extractall(r"([^\s:]+):\s*(.+?)\s*(?=[^\s:]+:|\Z)")
x = x.droplevel(level="match").pivot(columns=0, values=1)

print(x.apply(lambda x: x[x.notna()].to_dict(), axis=1).to_list())

印刷:

[
    {"Name": "Bob", "Surname": "Ross", "Title": "painter", "age": "34"},
    {
        "Name": "Newton",
        "Surname": "Isaac",
        "Title": "coin checker",
        "age": "42",
    },
    {"Name": "jack", "Title": "pilot", "age": "20"},
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM