我已经用尽了网上搜索,试图找出如何做到这一点。在
我有一个制表符分隔的文件searchfile.txt
,有两列和200行。示例如下:
A(H1N1)/SWINE/COTES-DARMOR/388/2009 X? 4.28144245
A(H1N2)/SWINE/SCOTLAND/410440/1994 X? 7.25878836
A(H1)/SWINE/ENGLAND/117316/1986 X? 3.305392038
A(H1)/SWINE/ENGLAND/438207/1994 X? 7.66078717
我有另一个文件keywords.txt
,其中一些关键字与searchfile.txt
中的id部分匹配:
我想从searchfile.txt
中提取包含keywords.txt
中任何关键字的行
使用其他类似问题的解决方案:
grep -F -f keywords.txt searchfile.txt > selected.txt
grep -f keywords.txt searchfile.txt
awk 'FNR==NR {a[$0];next} ($NF in a)' keywords.txt searchfile.txt > result.txt
我还通过这个python
脚本完成了部分工作:
infile = r"/path/to/searchfile.txt"
results = []
to_keep = ["ENGLAND/117316",
"DARMOR/388",
"438207"]
with open(infile) as f:
f = f.readlines()
for line in f:
for phrase in to_keep:
if phrase in line:
results.append(line)
break
print(results)
它在终端窗口中输出:
[
'A(H1N1)/SWINE/COTES-DARMOR/388/2009 X?\t4.28144245\n',
'A(H1)/SWINE/ENGLAND/117316/1986 X?\t3.305392038\n',
'A(H1)/SWINE/ENGLAND/438207/1994 X?\t7.66078717\n'
]
有办法吗
a)修改此脚本以从keywords.txt
这样的文件中读取并将行输出到另一个文件?(我的python技能还达不到这个水平)
或者
b)使用grep
,awk
,sed
。。。这样做
我认为问题是我的关键字不是完全独立的单词,必须部分匹配searchfile.txt
中的内容。在
感谢您的帮助!谢谢。在
这在python中相当简单。假设您有
keywords.txt
和input.txt
文件,并希望输出到output.txt
:这将读取keywords文件,并将其中的每一行存储在一个列表中(#1)。然后打开输入和输出文本文件,逐行循环输入文件,如果在行中找到任何关键字(#2),则写入输出文件。在
相关问题 更多 >
编程相关推荐