亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕無忌1623718 2022-07-12 10:02:11
我想使用第二個變量替換第一個變量的值,但我想保留逗號。我使用了正則表達式,但我不知道它是否可能是因為我還在學習它。所以這是我的代碼。import renames = '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
查看完整描述

2 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

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


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


查看完整回答
反對 回復 2022-07-12
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

我們可以如下構建映射:


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 應用映射。


查看完整回答
反對 回復 2022-07-12
  • 2 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號