[英]Regex in Python Equation Replacement
我是regex和Python的新手,处于以下情况。 我想要一个方程式字符串,例如"A + B + C + 4D"
,并将数字1放在所有没有数字的变量之前。 所以像这样:
>>> foo_eqn = "A + B + C + 4D"
>>> bar_eqn = fill_in_ones(foo_eqn)
>>> bar_eqn
"1A + 1B + 1C + 4D"
经过研究和询问,我想到了
def fill_in_ones(in_eqn):
out_eqn = re.sub(r"(\b[A-Z]\b)", "1"+ r"\1", in_eqn, re.I)
return(out_eqn)
但是,看起来这仅适用于前两个变量:
>>> fill_in_ones("A + B")
1A + 1B
>>> fill_in_ones("A + B + E")
1A + 1B + E
>>> fill_in_ones("2A + B + C + D")
2A + 1B + 1C + D
我真的很想念什么吗? 谢谢!
看起来像是re.I
(忽略大小写标志)是罪魁祸首:
>>> def fill_in_ones(in_eqn):
... out_eqn = re.sub(r"(\b[A-Z]\b)", "1"+ r"\1", in_eqn)
... return(out_eqn)
...
>>>
>>> fill_in_ones("A + 3B + C + 2D + E")
'1A + 3B + 1C + 2D + 1E'
这是因为re.sub的下一个位置参数是count
而不是flags
。 你需要:
def fill_in_ones(in_eqn):
out_eqn = re.sub(r"(\b[A-Z]\b)", "1"+ r"\1", in_eqn, flags=re.I)
return(out_eqn)
不幸的是, re.I
标志恰好是2
:
>>> import re
>>> re.I
2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.