我需要正确地将以下字符串拆分成较小的字符串:
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"]
答案 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 }}。