替换python中的特定字符串

时间:2018-01-19 10:04:20

标签: python regex

我需要在大型文本语料库中将所有出现的“W32 L30”替换为“W32in L30in”。 W,L之后的数字也各不相同。

我想过使用这个正则表达式

[W]([-+]?\d*\.\d+|\d+)
[L]([-+]?\d*\.\d+|\d+)

但是这些只能在每个W和L之后找到数字,所以更换每一个事件仍然是费力且非常耗时的,所以我想知道是否有办法在正则表达式中直接执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以使用捕获组并简化正则表达式。接下来,我们可以使用 backref 进行替换。像:

import re

RGX = re.compile(r'([WL]([-+]?\d*\.\d+|\d+))(in)?')
result = RGX.sub(r'\1in', some_string)

\1用于引用第一个捕获组:我们使用[WL]([-+]?\d*\.\d+|\d+)捕获的字符串的结果。最后一部分(in)?也可选地匹配单词in,以便在已经存在in的情况下,我们只需将其替换为相同的值。

所以如果some_string是例如:

>>> some_string
'A W2 in C3.15 where L2.4in and a bit A4'
>>> RGX.sub(r'\1in', some_string)
'A W2in in C3.15 where L2.4in and a bit A4'