首页 > 解决方案 > 在python中拆分键值字符串并将其移动到df列中

问题描述

这是我拥有的列,我想拆分为键值并存储在 pandas df 的新列中。

{"FontStyle"=>"Gill Sans Standard", "FontSize"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style":"Script","Font Size":"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style":"Gill Sans Standard","Font Size":"Medium (3mm)"}

主要问题是其中一些有 '=>' 而另一些有冒号

我想要 df 中的两个新列,一个用于字体样式,另一个用于字体大小以及其中的尊重值

如果有人可以帮助我实现这一点,那就太好了,而且如果您可以向我推荐一些正则表达式的书/教程,那将是很棒的。

谢谢

标签: pythonregexpandassplit

解决方案


到目前为止,这不是最有效的代码,但这可以完成工作。

import pandas as pd
import ast

text = '''{"FontStyle"=>"Gill Sans Standard", "FontSize"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}
{"Font Style"=>"Script","Font Size"=>"Medium (3mm)"}
{"Font Style"=>"Gill Sans Standard","Font Size"=>"Medium (3mm)"}'''

my_list = []

text = text.replace("FontStyle", "Font Style")
text = text.replace("FontSize", "Font Size")
text = text.replace("=>", ":")
text = text.split("\n")

for one_dict in text:
    my_list.append(ast.literal_eval(one_dict))

df = pd.DataFrame(my_list)
print(df)

上述代码的输出:

      Font Size          Font Style
0  Medium (3mm)  Gill Sans Standard
1  Medium (3mm)  Gill Sans Standard
2  Medium (3mm)              Script
3  Medium (3mm)  Gill Sans Standard

我希望这有帮助。:-) 如果有,请告诉我。


推荐阅读