簡體   English   中英

Python公式替換中的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM