使用 python 使用正则表达式在多个变量字段中拆分字符串
Splitting string in multiple variable fields using regex using python
我有一个数据框,其中某一列的每一行都是来自某种格式错误的文本,其中每个 'field' 都在 'field title' 之后,例如:
col
Name: Bob Surname: Ross Title: painter age:34
Surname: Isaac Name: Newton Title: coin checker age: 42
age:20 Title: pilot Name: jack
this is some trash text Name: John Surname: Doe
例如,字段可以按任何顺序排列,但其中一些可能不存在。
我需要做的是解析字段,使第二行变成这样:
{'Name': 'Isaac','Surname': 'Newton',...}
虽然我可以处理 'pythonic part' 我认为应该使用一些正则表达式来完成解析(也是因为行数为数千)但我不知道如何设计它。
尝试:
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"},
]
我有一个数据框,其中某一列的每一行都是来自某种格式错误的文本,其中每个 'field' 都在 'field title' 之后,例如:
col |
---|
Name: Bob Surname: Ross Title: painter age:34 |
Surname: Isaac Name: Newton Title: coin checker age: 42 |
age:20 Title: pilot Name: jack |
this is some trash text Name: John Surname: Doe |
例如,字段可以按任何顺序排列,但其中一些可能不存在。
我需要做的是解析字段,使第二行变成这样:
{'Name': 'Isaac','Surname': 'Newton',...}
虽然我可以处理 'pythonic part' 我认为应该使用一些正则表达式来完成解析(也是因为行数为数千)但我不知道如何设计它。
尝试:
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"},
]