猿问

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

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代码。


叮当猫咪
浏览 219回答 3
3回答

一只名叫tom的猫

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

鸿蒙传说

我认为使用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可以很容易地解决这个问题。
随时随地看视频慕课网APP

相关分类

Python
我要回答