我有一个错误拼写介词的句子列表。我有一个拼写正确的preps列表:
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包含的句子像['他是喷泉',......还有更多]。请帮忙..我的语法错了..
答案 0 :(得分:1)
我会用:
# 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(jellyfish.soundex(w), w)
表达式的输出。
soundex_to_ref
对象是从ref_data
列表生成的字典;对于该列表中的每个单词,字典都有一个键(该单词的soundex值),该值是原始单词。这使我们可以轻松查找给定soundex的参考单词。
dict.get()
可让您在字典中查找密钥,如果不存在,则返回默认值。 soundex_to_ref.get(jellyfish.soundex(w), w)
为当前单词w
创建soundex,查找参考单词,如果词典中不存在soundex,则替换原始单词。
您可以使用以下方法将words
列表加入句子中
line = ' '.join(words)
您可以使用以下内容在一个表达式中重建text1
text1 = [' '.join([soundex_to_ref.get(jellyfish.soundex(w), w) for w in line.split()])
for line in text1]