我正在尝试将python中的某些数据标准化,以便在数字跟随的情况下将#替换为NUMBER。此外,#和数字之间可以有一个选项空间。以下是我到目前为止的情况。我正在努力弄清楚如何保留空间。
string_stuff = re.sub(ur'#\s?[0-9]', 'NUMBER \1', string_stuff)
我知道上面的代码匹配其中一个数字,但我如何匹配所有数字?以下是几个例子。
# 334534 > NUMBER 334534
#657 > NUMBER 657
#234234234 > NUMBER 234234234
任何帮助表示赞赏!感谢。
答案 0 :(得分:0)
您需要将[0-9]
放入捕获组中,以便可以在替换部件中对其进行反向引用。
string_stuff = re.sub(r'#\s?([0-9])', r'NUMBER \1', string_stuff)
答案 1 :(得分:0)
我会使用前瞻来做到这一点:
re.sub(ur"#(?=\s?[0-9])", "NUMBER", string_stuff)
这实际上并不替换可选空格+数字 - 它只是使用它们来匹配。
答案 2 :(得分:0)
您需要一个捕获组(由parens表示)。这个组中的内容将替换为\1
。您还需要匹配一个或多个数字。 +
匹配前一个元素中的一个或多个。
string_stuff = re.sub(ur'#\s?([0-9]+)', 'NUMBER \1', string_stuff)