Python取代了1985年提到的'85年

时间:2015-02-05 16:15:55

标签: python regex regex-group

我正在使用这个正则表达式来替换形式为'85的年份的所有年份与1985年的字符串

import re
re.sub("'(\d\d)", "19\1", "Today '45")

但我得到的结果远非预期:

'Today 19\x01'

我希望得到Today 1945。我想知道什么是正确的方法。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:4)

将字符串设为原始字符串

>>> re.sub(r"'(\d\d)", r"19\1", "Today '45")
'Today 1945'

Avinash建议,使用字边界\b。它们更好,因为它们可以帮助您忽略不是两位数的数字,例如3456

>>> re.sub(r"'(\d{2})\b", r"19\1", "Today '45, '3456")
"Today 1945, '3456"

答案 1 :(得分:3)

使用\g<1>代替\1来引用该群组:

In [21]: re.sub("'(\d\d)", "19\g<1>", "Today '45")
Out[21]: 'Today 1945'

或使用原始字符串:

In [22]: re.sub("'(\d\d)", r"19\1", "Today '45")
Out[22]: 'Today 1945'

您的代码无效,因为Python interprets \1 as a character.