使用Python替换字符串中的单词

2024-09-22 18:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把DEA*LDE*ALDEAL替换成DEAL:

请检查以下字符串:-

VDY=Akshay Godse SBK=Sataraa REF:Mahesh Shinde DEA*L HSBC BANK
VDY=Sayaji Godse SBK=Pune REF:Shasikant Shinde DE*AL SS BANK
VDY=Pandurang Godse SBK=Solapur REF:Jayavant Shinde DEAL BOI BANK

更换后的结果应为:-

VDY=Akshay Godse SBK=Sataraa REF:Mahesh Shinde DEAL: HSBC BANK
VDY=Sayaji Godse SBK=Pune REF:Shasikant Shinde DEAL: SS BANK
VDY=Pandurang Godse SBK=Solapur REF:Jayavant Shinde DEAL: BOI BANK

有没有办法把上面的三个字替换掉?你知道吗


Tags: refdebankaldealakshaydeamahesh
3条回答

更通用的方法是在*DEAL之间的任何地方使用*星号

import re

input = '''VDY=Akshay Godse SBK=Sataraa REF:Mahesh Shinde DEA*L HSBC BANK
VDY=Sayaji Godse SBK=Pune REF:Shasikant Shinde DE*AL SS BANK
VDY=Pandurang Godse SBK=Solapur REF:Jayavant Shinde DEAL BOI BANK'''
pattern = ' [DEAL*]{4,5} '

output = re.sub(pattern, " DEAL: ", input)
print(output)

您可以使用?量词,表示每个字符D\*?E\*?A\*?L之间的一个星,并始终替换为DEAL:

values = ["VDY=Akshay Godse SBK=Sataraa REF:Mahesh Shinde DEA*L HSBC BANK",
          "VDY=Sayaji Godse SBK=Pune REF:Shasikant Shinde DE*AL SS BANK",
          "VDY=Pandurang Godse SBK=Solapur REF:Jayavant Shinde DEAL BOI BANK"]
for value in values:
    value = re.sub("D\*?E\*?A\*?L", "DEAL:", value)
    print(value)

^{}


您甚至可以动态构建模式

word = "DEAL"
pattern = r"\*?".join(list(word)) # D\*?E\*?A\*?L
replacement = word + ":"          # DEAL:

for value in values:
    value = re.sub(pattern, replacement, value)

尝试用DEAL替换DE\*?A\*?L。你知道吗

Check out this demo

相关问题 更多 >