从"param1=1-param2=1.e-01-param3=A"
开始,如何获得
["param1=1", "param2=1.e-01", "param3=A"]
?问题是分离器" - "可以包含在参数的值中。
弗兰克
>>> import re
>>> re.split("-", "param1=1-param2=1.e-01-param3=A")
['param1=1', 'param2=1.e', '01', 'param3=A']
>>> re.split("[^e]-[^0]", "param1=1-param2=1.e-01-param3=A")
['param1=', 'aram2=1.e-0', 'aram3=A']
>>> re.split("[?^e]-[?^0]", "param1=1-param2=1.e-01-param3=A")
['param1=1-param2=1.', '1-param3=A']
修改
好的,我忘了提到param1,param2,param3确实没有共享相同的"param"
字符串。如果我们必须将"p=1-q=1.e-01-r=A"
拆分为同一类型的列表["p=1", "q=1.e-01", "r=A"]
呢?
修改
>>> re.split("(?:-)(?=[a-z]+)", "p=1-q=1.e-01-r=A")
['p=1', 'q=1.e-01', 'r=A']
我知道参数名称的作业是否不能携带任何-
。
谢谢,伙计们!
答案 0 :(得分:2)
通过使用非捕获组和正向前瞻,只有在'-'
之后才捕获'param'
:
import re
string = "param1=1-param2=1.e-01-param3=A"
print(re.split(r"(?:-)(?=param)", string))
# ['param1=1', 'param2=1.e-01', 'param3=A']
答案 1 :(得分:0)