我正在使用 python,并且必须在 dict 中处理几个键顺序选项以清除单引号。 dict 现在仍然是一个字符串,因为我无法将其转换为 dict。
例如,清除第一个选项的 name 很容易,并且可以通过
df.loc[:,'general_data'].str.replace(r"('name': ')(.*)(', 'phone')",
lambda x: x.group(1) + x.group(2).replace("'", "") + x.group(3), regex=True)
这解决了这里看到的第一个组合
"{'city': '1111 Doecity', 'name': 'Ben's Carrepair', 'phone': '0211222222', 'street': 'Unter'm Bobbele 39'}"
所以所有不必要的单引号都被删除了。 name 的结果是
Bens Carrepair
如果没有电话号码 street 应该像以前使用的名字一样使用。
第二个字符串选项是:
"{'city': '1111 Doecity', 'name': 'Ben's Carrepair', 'street': 'Unter'm Bobbele 39'}"
所以我的问题是如何像 IF - ELSE - 结构 那样组合前瞻,以便如果没有电话号码,则该组仅限于 ' street' 就像在工作示例中一样,直到 'phone'
此处显示的数据包含在 pandas 数据框列中。 如果有任何要求,请随时询问。我#通常不经常使用正则表达式..
答案 0 :(得分:2)
你可以使用
pattern = r"(?<='name': ').*?(?=', '(?:street|phone)')"
df['general_data'].str.replace(pattern, lambda x: x.group().replace("'", ""))
也就是说,您可以通过在模式中使用环视来简化替换,以匹配 'name': '
和 ', 'street'
或 ', 'phone'
之间最少数量的字符,并且您只需要删除 { {1}} 第 0 组,整场比赛。