从列表文件中查找至少包含一个单词的所有短语,并将它们保存到新文件中

2024-04-25 04:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件: - 短语.txt -单词\u to_擦除.txt你知道吗

我需要一种方法来找出短语.txt'中至少包含一个单词_替换.txt'文件并创建以下内容:

新建_短语.txt:这是一个新文件,没有上一步中找到的所有短语。你知道吗

删除的短语:此文件包含为创建“new”而删除的所有短语_短语.txt'文件

我可以使用python或linux来实现这一点。你知道吗

注:

你知道吗短语.txt是一个包含10万个短语的文件,每行1个短语

单词\u to_擦除.txt是一个包含80个不同单词的文件,每行1个单词。你知道吗

我试过使用Linux:

grep -f words_to_erase.txt phrases.txt > newfile.txt

这样,我只得到一个文件与新的短语没有替换的短语,我不认为这个大小写不敏感,虽然,我尝试使用-我与它似乎不起作用。你知道吗

我尝试了python,比如:

in_file = open("words_to_erase.txt", "rt") 
contents = in_file.read(line)         
in_file.close()     
print contents              

sourcefile = "phrases.txt"
filename2 = "newfile.txt"

def fixup( filename ): 
    print "fixup ", filename 
    fin = open( filename ) 
    fout = open( filename2 , "w") 
    for line in contents: 
        if not any(item in line for item in contents):
                fout.write(line)  
    fin.close() 
    fout.close() 

fixup(sourcefile)

Tags: 文件tointxtcloselinecontentsopen
1条回答
网友
1楼 · 发布于 2024-04-25 04:20:23

我用这个脚本从一个包含40万个短语的文件中grep(短语.txt)从包含1000个单词的文件中删除所有包含单词的行_擦除.txt),脚本用了大约15分钟完成,但准确率为100%。你知道吗

注意。-当我用grep-f单词_擦除.txt短语.txt,grep跳过了许多短语,包括从单词到单词的单词_擦除.txt文件,使用这个bash脚本逐字搜索并输出正确数量的短语。你知道吗

  1. 要创建脚本: 复制此脚本并将其粘贴到文本编辑器上,使用任何名称和扩展名保存它。sh

    #!/bin/bash
    cat words_to_erase.txt | while read line 
    do
        echo $line
        grep -iwv $line phrases.txt >> newfile.txt
        cat newfile.txt | sort | uniq >> final_file.txt
    done
    

2.-使脚本可执行:

    chmod -x $name_of_script.sh
  1. 运行脚本:

    ./$name_of_script.sh
    

相关问题 更多 >