python - 删除所有包含字典中未包含单词的行

标签 python bash unix

我有一本来自 /usr/share/dict/words 的英语单词词典

我有一个巨大的句子文件,逐行排列。我正在尝试通过与词典进行比较来删除这些带有外来词和词汇外单词的奇怪句子。

Master.txt
Thanks to Your Greatness (谢谢你的美好)
Himatnagar has a small Railway Station
Pu$haz Ink

有人可以帮忙吗?我尝试使用 diff 但它只能在单词级别进行比较,而不能在句子级别进行比较

最佳答案

您需要分阶段执行此操作。

首先,使用 tr (或者可能是 sed - 稍慢但更灵活,允许更精确地删除标点符号等),将句子文件分成单词:

tr " " "\n" < hugefile | sort | uniq | grep -v -F -f dictionary > blacklist.txt

grep 添加 -i 选项以实现不区分大小写(请参阅 Scott 的评论)。

然后,您可以使用 uniq 来收集唯一的单词,并使用 grep -v -F -fdictionary 来获取所有的单词字典。

一旦有了这个“黑名单”,您就可以请求所有包含黑名单本身中任何单词的行。同样,您可能需要考虑大写/小写,也可能不考虑:

 grep -v -F -f blacklist.txt > goodlines.txt

在 Python 中,您可以以一种可能更有效的方式遵循相同的方法:

  • 将字典加载到列表 D 中。
  • 对于输入巨大文件的每一行
    • 将其拆分为单词,使这个小列表变得独一无二。让这是W。
    • 计算两个列表 W 和 D 的交集。
    • 如果其长度与W的长度相同,则该行不包含未知单词。

关于python - 删除所有包含字典中未包含单词的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416024/

相关文章:

ruby - sudo gem --proxy <PROXY> 或 bash 函数的别名?

bash - 直接使用 gnuplot 完成绘图并使用管道输入数据

supervisord 可以用于程序的内存和 CPU 使用情况分析吗

shell - OpenSSL 从 shell 标准输入创建 SHA 哈希

c++ - 获取可执行文件中使用的静态库列表

python - 3.4 枚举应该使用 UPPER_CASE_WITH_UNDERSCORES 吗?

python - 从 csv/2d 数组中提取一系列元素

从 CSV 文件复制列的 Pythonic 方法

python - Pytest:仅测试参数化 fixture 的一个实例

bash - 使用 bash 进行动态 zip 文件校验和检查