2017-08-09 33 views
0

我有這樣使用python

 convert_text = "tet1+tet2+tet34+tet12+tet3" 

我想從上面string.That映射列表中的可用separately.so更換成數字字符的字符串,當我試圖取代數字1取代number進入角色從字符串具有字符 'G' 代替使用象下面

 import re 
     convert_text = convert_text.replace('1','g') 
     print(convert_text) 

輸出是

 "tetg+tet2+tet34+tetg2+tet3" 

如何區分單個數字和兩個數字值。是否有任何與Regexp或其他方式有關的方法?

+0

採取看正則表達式 – Netwave

+0

「34」是單個替換還是替換「3」和「4」? –

+0

我想要34作爲單一替換 – kokila

回答

1

您可以使用正則表達式與可呼叫更換的說法來代替數字連續運行在一個查找表中的值,例如:

import re 

# Input text 
convert_text = "tet1+tet2+tet34+tet12+tet3" 

# to->from of digits to string 
replacements = {'1': 'A', '2': 'B', '3': 'C', '12': 'T', '34': 'X'} 

# Do actual replacement of digits to string 
converted_text = re.sub('(\d+)', lambda m: replacements[m.group()], convert_text) 

它給你:

'tetA+tetB+tetX+tetT+tetC' 
0
import re 
convert_text = "tet1+tet2+tet34+tet12+tet3" 
pattern = re.compile(r'((?<!\d)\d(?!\d))') 
convert_text2=pattern.sub('g',convert_text) 

convert_text2 缺貨[2]: 'tetg + tetg + tet34 + tet12 + tetg'

你必須使用負先行和負回顧後發模式,其是在括號

(?!pat) and 
(?<!pat), 
之間

你有相同的=而不是!積極向前看/向後看。

編輯:如果你需要更換的數字串,正則表達式是

pattern2 = re.compile(r'\d+') 

在任何模式,你可以通過你需要一個特定的數字替換\ d。