使用python中的regex在字符串中的子字符串之前添加空格

时间:2016-11-22 04:59:56

标签: python regex

我有两个清单:

list_1 = ["TP", "MP"]

list_2 = ["This is ABC12378TP0892S3", "This is XYZ12378MP0892S3"]

我想从list_1获取元素并搜索list_2的字符串。如果找到(例如TP的第一个字符串中存在list_2MP的第二个字符串中存在list_2,请移除{右侧}的内容{1}}等,并在其左侧插入空格。

我使用TP, MP尝试了以下内容,但它只删除了正确的部分:

re

2 个答案:

答案 0 :(得分:1)

您可以按如下方式编译正则表达式,然后使用它在每个列表条目上执行sub()

import re

list_1 = ["TP", "MP"]
list_2 = ["This is ABC12378TP0892S3", "This is XYZ12378MP0892S3", "SDTP This is ABC12378TP0892S3"]    

re_sub = re.compile(r'(.*\b\w+)({}).*'.format('|'.join(list_1))).sub
list_2 = [re_sub(r'\1 \2', t) for t in list_2]

print list_2

这会显示:

['This is ABC12378 TP', 'This is XYZ12378 MP', 'SDTP This is ABC12378 TP']

在此示例中,使用的搜索模式为:

(.*\b\w+)(TP|MP).*

答案 1 :(得分:0)

我觉得你很亲密。添加空格... r' \1'

也不确定\d+,因此请将其替换为.*

>>> [ re.sub(r'(' +  '|'.join(list_1) + ').*', r' \1', string) for string in list_2 ]
['This is ABC12378 TP', 'This is XYZ12378 MP']