在使用正则表达式Python替换字符串列表中的数值时需要帮助

时间:2018-08-23 06:05:37

标签: regex python-3.x

在替换Python字符串列表中的数值时,我需要帮助。我可以映射字符串的某些部分,但是在同一字符串上有两个替换项值得关注。我正在寻找完全匹配的替换项,因为我对正则表达式非常陌生,因此无法正确匹配。任何帮助将非常感激。

下面是我尝试的示例。

tomap = ['14','83','9']

textlist = ['World11118','helloWD11','Stop12']

oldvalue = ['1111','11','12']

dict_set = dict(zip(oldvalue, tomap))

p = r'\b(?<=\D)' + '|'.join(oldvalue) + r'(?=\z)\b'

[re.sub(p, lambda x: dict_set[x.group()],i) for i in  textlist]

预期输出:输出[165]:

['World11118', 'helloWD83', 'Stop9']

当前输出:Out [165]:

['World83838', 'helloWD83', 'Stop12']

1 个答案:

答案 0 :(得分:0)

您可以这样做:

这将测试前一个字符是否为非数字。并使用$显示字符串的结尾。您也可以使用\\b而不是$来指示边界,这取决于您的字符串的类型以及最适合您的字符串。

[re.sub('(?<=\\D)'+ k + '$', i, j) for i, j, k in zip(tomap, textlist, oldvalue)]
Out[256]: ['World11118', 'helloWD83', 'Stop9']