input_filename = 'INPUT-FILE'
output_filename = 'OUTPUT-FILE'
dictionary_filename = '/usr/share/dict/words'
english_words = set(x[:-1].lower() for x in open(dictionary_filename).readlines())
def lines_with_only_english_words(input_filename):
with open(input_filename) as fin:
for line in fin:
for w in line.split():
if w.lower() not in english_words:
break
else:
yield line
with open(output_filename, 'w') as fout:
fout.writelines(lines_with_only_english_words(input_filename))
如果你不介意的话:
说明
FNR==NR后的大括号部分仅适用于处理第一个文件,即字典。它将字典中的每个单词保存在名为dict[]的哈希中。第二组大括号中的部分适用于主输入文件的处理。它循环遍历行中的所有单词,如果字典中没有出现任何单词,则跳过该行,否则末尾的1将打印该行,因为它是真的。在
你想要这样的东西:
英语句子-仅.py
^{pr2}$你需要分阶段进行。在
首先,使用
tr
(或者也许是sed
-稍微慢一点但更灵活,允许更精确地删除标点符号等),将句子文件分为单词:将
-i
选项添加到grep
以实现不区分大小写(请参阅Scott的评论)。在然后使用
uniq
收集唯一单词,使用grep -v -F -f dictionary
获取字典中所有不是的单词。在一旦你有了这个“黑名单”,你就可以要求黑名单中不包含任何单词的所有行。或者,您可能想再次考虑大写/小写:
^{pr2}$在Python中,您可以以更有效的方式遵循相同的方法:
相关问题 更多 >
编程相关推荐