使用以下方法将11 12 13 14
转换为11a 12a 13a 14a
很容易:
myStr = "11 12 13 14"
myStr = re.sub(r'(\d*)', r'\1a', myStr)
print myStr # 11a 12a 13a 14a
但如何使用11 12 13 14
将12 13 14 15
变为re.sub
?
答案 0 :(得分:5)
re.sub()
的正则表达式解决方案:
import re
string = "11 12 13 14"
def repl(m):
number = int(m.group(1)) + 1
return str(number)
print re.sub(r'\b(\d+)\b', repl, string)
# 12 13 14 15
正如其他人所说,这可能不是最合适的解决方案。
答案 1 :(得分:2)
对于只包含用空格分隔的整数的字符串,最简单的方法是
s = "11 12 13 14"
print(" ".join([str(int(x)+1) for x in s.split()]))
# => 12 13 14 15
请参阅IDEONE demo
re.sub
的替代方案可以在\d+
正则表达式模式和替换部分中的lambda的帮助下使用:
import re
s = "11 12 13 14"
res = re.sub(r'\d+', lambda x: str(int(x.group()) + 1), s)
print(res) # => 12 13 14 15
正则表达式方法的优点是:
$
后跟\d+(?=\$)
的增量数字或不属于使用(?<!\d\.)\b\d+\b(?!\.\d)
)