我想用%d
代替數字,例如,使一個新的字符串替換數字:與str.replace()
Name.replace("_u1_v1" , "_u%d_v%d")
...但數量1
例如可以是任何數字"_u2_v2.tx"
我可以給replace()
一個通配符來期望任何數字嗎?像"_u"%d"_v"%d".tx"
或者我必須做一個正則表達式嗎?
我想用%d
代替數字,例如,使一個新的字符串替換數字:與str.replace()
Name.replace("_u1_v1" , "_u%d_v%d")
...但數量1
例如可以是任何數字"_u2_v2.tx"
我可以給replace()
一個通配符來期望任何數字嗎?像"_u"%d"_v"%d".tx"
或者我必須做一個正則表達式嗎?
你不能; str.replace()
只能使用文字文本只能使用。
要替換的模式,使用正則表達式:
re.sub(r'_u\d_v\d', '_u%d_v%d', inputtext)
演示:
>>> import re
>>> inputtext = '42_u2_v3.txt'
>>> re.sub(r'_u\d_v\d', '_u%d_v%d', inputtext)
'42_u%d_v%d.txt'
使用正則表達式:
>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
\d
任意數量的0-9匹配。 re.sub
替換%d
只是爲了不同的號碼,一些非正則表達式的方法:
>>> s = "_u1_v1"
>>> ''.join("%d" if c.isdigit() else c for c in s)
'_u%d_v%d'
,或者您需要將多個數字:
>>> from itertools import groupby, chain
>>> s = "_u1_v13"
>>> grouped = groupby(s, str.isdigit)
>>> ''.join(chain.from_iterable("%d" if k else g for k,g in grouped))
'_u%d_v%d'
(要誠實,雖然,雖然我通常是反正則表達式,但這種情況很簡單,我可能會使用它們。)
它沒有任何意義,您用任何數字替換值。你必須定義數字。如果您有一些定義數字或輸入的函數,則傳入保存該值的變量。例如,Name.replace(「_ u1_v1」,「_u」+ variableName +「_v」+ variableName)。 – JungJoo