簡體   English   中英

在python中使用正則表達式和for循環值替換字符串

[英]Replacing string by using regex and for loop value in python

我想使用第二個變量替換第一個變量的值,但我想保留逗號。 我使用了正則表達式,但我不知道它是否可能,因為我還在學習它。 所以這是我的代碼。

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

我懷疑您正在尋找的內容應該類似於以下內容:

import re

testString = '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 re
names = '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 來應用映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM