Python 用相同的soundex替换单词

Python 用相同的soundex替换单词,python,regex,soundex,Python,Regex,Soundex,我有一个介词拼写错误的句子列表。我有一个拼写正确的prep列表: ref_data = ['near','opposite','off','towards','behind','ahead','below','above','under','over','in','inside','outside'] 我需要根据我的数据计算单词的soundex,如果soundex匹配,则用我的参考单词替换它。。这是我的密码: for line in text1: for word in line.split(

我有一个介词拼写错误的句子列表。我有一个拼写正确的prep列表:

ref_data = ['near','opposite','off','towards','behind','ahead','below','above','under','over','in','inside','outside']
我需要根据我的数据计算单词的soundex,如果soundex匹配,则用我的参考单词替换它。。这是我的密码:

for line in text1:
for word in line.split():
    if jellyfish.soundex(word)==jellyfish.soundex([words,int in enumerate(ref_data)])
       word = #replace code here
我真的很困惑。。text1包含类似于[“他是喷泉”…更多]的句子。请帮忙。。我的语法错误。

我会使用:

# mapping from soundex to correct word
soundex_to_ref = {jellyfish.soundex(w): w for w in ref_data}

for line in text1:
    words = [soundex_to_ref.get(jellyfish.soundex(w), w) for w in line.split()]
这将为每一行生成一个单词列表,所有与soundex拼写正确的单词匹配的单词将替换为拼写正确的单词

[…for..in…]
语法是一种列表理解,它为
for
循环中的每个项目生成一个新值。因此,对于
line.split()
中的每个单词,我们在输出列表中生成
soundex_to_ref.get(jellyish.soundex(w),w)
表达式的输出

soundex\u to\u ref
对象是一个字典,由
ref\u数据列表生成;对于该列表中的每个单词,字典都有一个键(该单词的soundex值),该值为原始单词。这让我们可以轻松地查找给定soundex的参考词

dict.get()
允许您在字典中查找键,如果它不存在,则返回默认值
soundex\u to_ref.get(jellyish.soundex(w),w)
为当前单词创建soundex
w
,查找参考单词,如果词典中不存在soundex,则替换原始单词

您可以使用以下方法将
单词
列表重新连接成一个句子:

line = ' '.join(words)
您可以在一个表达式中使用以下命令重建
text1

text1 = [' '.join([soundex_to_ref.get(jellyfish.soundex(w), w) for w in line.split()])
         for line in text1]

第三行也有错误嗨,谢谢。。但在执行上述代码后,我仍然看不到text1中有任何更改..:(有什么想法吗?@Swarm:继续读下去;答案就在最后。你的问题从来没有提到过改变
text1
本身,顺便说一句。是的,我马上就去做。我试过上面的代码,但所有单词都是联合的。这看起来像是这样的-他离山很近。我该如何处理?我试过在“”中添加一个空格。加入..对,sorry、 这本来是一个空格。更正。不,那么您现在没有运行答案中的代码。
str.join()
将字符串列表与字符串对象连接。
'foo'。join(['bar','baz','spam'])
生成
'bar-foo-baz-foo-spam'
例如,如果您没有看到任何空格,您就没有使用
''.join(…)