Python - 如何使用正则表达式拆分字符串?

时间:2017-01-25 16:08:12

标签: python regex string split data-cleaning

我想拆分以下字符串以分别获取每个属性:

String_one: 'archived': True, 'id': '30znq1', '_has_fetched': True
String_two: \\'hidden\\': False, \\'user_reports\\': [], \\'num_reports\\': None

我知道所有属性都以",'"或",\\'" 最初我只是使用了两个string.spilt()

1) line.split(', \'')
2) line.split(', \\\'')

这些都完成了这项工作,但我正在处理大量数据,而且这些数据都非常通用,并且模式在数据中的某处不匹配。

所以我尝试了一个re.split:

reg_split_no_esc = re.compile(', \'(.*\': .*)')
reg_split_esc    = re.compile(', \\\'(.*\\\': .*)')

line = re.split(reg_split_esc, line)
line = re.split(reg_split_no_esc, line)

正则表达式旨在找到第一个",\'"如果它后跟字符单引号和冒号,它就意味着要抓住",\'"。

之后的内容。

reg_split_no_esc在第一个拆分条件上拆分但不再拆分,另一个模式不起作用。

任何帮助都会非常感激

编辑: 我的第一个正则表达式有效,但它只拆分第一个元素,其余部分取消拆分,所以它看起来像这样:

_uniq': None

suggested_sort': None, 'secure_media_embed': {} 'report_reasons': None, '_params': {}

1 个答案:

答案 0 :(得分:2)

为了完整起见,我找到了答案,那是lookahead assertion

最终模式如下:

re.compile(', \'(?=\w*\': )')

干杯