在python中使用正则表达式和for循环值替换字符串

我想使用第二个变量替换第一个变量的值,但我想保留逗号。我使用了正则表达式,但我不知道它是否可能是因为我还在学习它。所以这是我的代码。


import re

names = 'Mat,Rex,Jay'

nicknames = 'AgentMat LegendRex KillerJay'

split_nicknames = nicknames.split(' ')

for a in range(len(split_nicknames)):

    replace = re.sub('\\w+', split_nicknames[a], names)

print(replace)

我的输出是:


KillerJay,KillerJay,KillerJay

我想要这样的输出:


AgentMat,LegendRex,KillerJay


慕无忌1623718
浏览 232回答 2
2回答

阿晨1998

我怀疑您正在寻找的内容应该类似于以下内容:import retestString = 'This is my complicated test string where Mat, Rex and Jay are all having a lark, but MatReyRex is not changed'mapping = { 'Mat' : 'AgentMat',            'Jay' : 'KillerJay',            'Rex' : 'LegendRex'}reNames = re.compile(r'\b('+'|'.join(mapping)+r')\b')res = reNames.sub(lambda m: mapping[m.group(0)], testString)print(res)执行这个会产生映射的结果:This is my complicated test string where AgentMat, LegendRex and KillerJay are all having a lark, but MatReyRex is not changed

皈依舞

我们可以如下构建映射:import renames = 'Mat,Rex,Jay'nicknames = 'AgentMat LegendRex KillerJay'my_dict = dict(zip(names.split(','), nicknames.split(' ')))replace = re.sub(r'\b\w+\b', lambda m:my_dict[m[0]], names)print(replace)然后使用 lambda 应用映射。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python