根据python中另一个字符之前的字符最后一次出现来解析字符串

时间:2019-04-10 22:35:29

标签: python string

我需要正确地将以下字符串拆分成较小的字符串:

s = "A=3, B=value one, value two, value three, C=NA, D=Other institution, except insurance, id=DRT_12345"

我无法执行以下操作,因为我只需要在“ =”

之前的最后一个“,”上进行拆分
s.split(",")

我想要的结果如下:

out = ["A=3",
 "B=value one, value two, value three", 
"C=NA",
 "D=Other institution, except insurance", 
"id=DRT_12345"]

2 个答案:

答案 0 :(得分:2)

按照字符串的结构,可以使用TypeError: '>=' not supported between instances of 'Select' and 'datetime.datetime'

re.findall

import re

re.findall(r'\S+=.*?(?=, \S+=|$)', s)

该模式使用前瞻性来确定何时停止匹配当前键值对。

['A=3',
 'B=value one, value two, value three',
 'C=NA',
 'D=Other institution, except insurance',
 'id=DRT_12345']

答案 1 :(得分:0)

在“等号之前的最后一个逗号”上分割可以转换为如下正则表达式:

import re
out = re.split(r',(?=[^,]*=)', s)

这是一个逗号(,),后跟(正向查找-(?= .. ))任意数量的非逗号字符([^,]*),然后是等号({{1 }}。