在替换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']
答案 0 :(得分:0)
您可以这样做:
这将测试前一个字符是否为非数字。并使用$
显示字符串的结尾。您也可以使用\\b
而不是$
来指示边界,这取决于您的字符串的类型以及最适合您的字符串。
[re.sub('(?<=\\D)'+ k + '$', i, j) for i, j, k in zip(tomap, textlist, oldvalue)]
Out[256]: ['World11118', 'helloWD83', 'Stop9']