我想检查字符串是否以" _INT"结尾。
这是我的代码
nOther = "c1_1"
tail = re.compile('_\d*$')
if tail.search(nOther):
nOther = nOther.replace("_","0")
print nOther
输出:
c101
c102
c103
c104
但是字符串中可能有两个下划线,我只对最后一个感兴趣。
如何编辑代码来处理此问题?
答案 0 :(得分:2)
使用两个步骤是没用的(检查模式是否匹配,进行替换),因为re.sub
只需一步即可完成:
txt = re.sub(r'_(?=\d+$)', '0', txt)
该模式使用前瞻(?=...)
(即后跟),它只是一个检查,内部的内容不是匹配结果的一部分。 (换句话说,\d+$
未被替换)
答案 1 :(得分:0)
一种方法是捕获不是最后一个下划线的所有内容并重建字符串。
import re
nOther = "c1_1"
tail = re.compile('(.*)_(\d*$)')
tail.sub(nOther, "0")
m = tail.search(nOther)
if m:
nOther = m.group(1) + '0' + m.group(2)
print nOther