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
鸿蒙传说
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可以很容易地解决这个问题。
添加回答
举报
0/150
提交
取消