为了账号安全,请及时绑定邮箱和手机立即绑定

用另一个列表中的单词替换文本中出现的列表中的单词

用另一个列表中的单词替换文本中出现的列表中的单词

叮当猫咪 2021-03-04 08:51:33
position_list = ['front', 'frnt', 'ft', 'back', 'bck', 'behind', 'right', 'rhs']position = ['down', 'right', 'inner', 'front', 'top', 'back', 'left']这是我在PYTHON中正在处理的两个列表。对于给定的文本,如果position_list中的任何单词出现,则必须将其替换为位置中的特定单词。即文本是:“ frnt轮胎和bck轮胎已磨损”“ frnt”和“ bck”必须分别替换为“ front”和“ back”。我使用的python代码是:if wrong == 'frnt' or wrong == 'ft':str = str.replace(错误,'front')if wrong == 'bck' or wrong == 'behind':str = str.replace(错误,'返回')但是我正在寻找可以使用这些列表直接替换单词的python代码。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您需要在两个列表之间进行某种映射,否则您将无法找出要替换为什么的内容。您可以使用一个字典:


t = 'The frnt tyre'


words = {

    'front': ('frnt', 'frt'),

}


for word, repl in words.items():

    for r in repl:

        t = t.replace(r, word)


print t

结果:


The front tyre


查看完整回答
反对 回复 2021-03-30
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

我认为使用sting.replace()方法,(也许)将替换您不想替换的子字符串,如@oleg所示


我知道这不是更干净的方法,但也许使用字典以及.split()和.join()会有所帮助。


s = 'the frt bck behind'

l = s.split()

new =[]

d ={'frt':'front','behind':'back','bck':'back'}

for word in l:

    if word in d:

        new.append(d[word])

    else:new.append(word)    

print " ".join(new)

>>> the front back back

我想会出现大写字母,小写字母和标点符号的问题,但是用几个string.replace()s可以很容易地解决这个问题。


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信