re.M被不工作我有這樣的代碼:我的代碼
import re
s = """line1
line2"""
print(re.sub("^", "=", s, re.M))
和輸出是:
=line1
line2
即REG。表達式「^」僅查找字符串的開頭,而不是文檔中所述的行的開頭。我意識到錯誤是在我的代碼中,但在哪裏?
Genneraly我需要替換字符串中每行的所有前導空格。
謝謝!
re.M被不工作我有這樣的代碼:我的代碼
import re
s = """line1
line2"""
print(re.sub("^", "=", s, re.M))
和輸出是:
=line1
line2
即REG。表達式「^」僅查找字符串的開頭,而不是文檔中所述的行的開頭。我意識到錯誤是在我的代碼中,但在哪裏?
Genneraly我需要替換字符串中每行的所有前導空格。
謝謝!
那是因爲你傳遞了flags
參數作爲位置。嘗試:
print(re.sub("^", "=", s, flags=re.M))
否則你是通過什麼re.M
到count
參數。旗幟在count
之後。在這種情況下最好使用關鍵字。
隨着該修補程序,我得到:
=line1
= line2
在你的榜樣,你是路過re.M
作爲第四個參數來re.sub
,這是換人允許的總數。恰巧,re.M
是一個數字常數8,所以你的代碼就相當於:
re.sub("^", "=", s, count=8)
正確的版本是通過re.M
作爲關鍵字參數:
import re
s = """line1
line2"""
print(re.sub("^", "=", s, flags=re.M))
您可以在標誌移到re.compile
以確保它不是由misunderstoody re.sub
:
print(re.sub(re.compile("^", re.M), "=", s))
爲例:
import re
s = """line1
line2"""
line_start = re.compile("^", re.M)
print(re.sub(line_start, "=", s))
# =line1
# = line2
python是「Python 3.6.0(v3.6.0:41df79263a11,Dec 23 2016,08:06:12)[MSC v.1900 64位(AMD64)]在win32上」 – Serge