【发布时间】:2013-02-03 10:29:36
【问题描述】:
我有一个文件,每行都有一个唯一的 ID 号。我正在尝试在不同的文件中搜索这些 ID 号的出现,并将这些 ID 号在第二个文件中的行返回,在本例中为输出文件。我是编程新手,这就是我目前所拥有的。
outlist = []
with open('readID.txt', 'r') as readID, \
open('GOlines.txt', 'w') as output, \
open('GO.txt', 'r') as GO:
x = readID.readlines()
print x
for line in GO:
if x[1:-1] in line:
outlist.append(line)
outlist.append('\n')
if x[1:-1] in line:
outlist.append(line)
outlist.append('\n')
print outlist
output.writelines(outlist)
文件如下所示:readID.txt
00073810.1
00082422.1
00018647.1
00063072.1
GO.txt
#query GO reference DB reference family
HumanDistalGut_READ_00048904.2 GO:0006412 TIGRFAM TIGR00001
HumanDistalGut_READ_00043244.3 GO:0022625 TIGRFAM TIGR00001
HumanDistalGut_READ_00048644.4 GO:0000315 TIGRFAM TIGR00001
HumanDistalGut_READ_00067264.5 GO:0003735 TIGRFAM TIGR00001
读取的 id 与 READ...
之后的一些但不是全部的 id 匹配【问题讨论】:
-
修复属性错误而不是使用 readlines() 做 x=readID.read().splitlines()
-
x是一个list行,而不仅仅是一个行。所以,你必须对x = [line.strip('\n') for line in x]到strip进行所有操作。但是,正如@SuperFamousGuy 所建议的那样,首先阅读它们而不使用换行符会更容易。 -
感谢您的帮助。我还注意到它应该用于 x[] 而不是 GO,它适用于 x 列表的离散值,但它不喜欢 x[1:-1]。 TypeError: 'in
' 需要字符串作为左操作数,而不是列表 -
您要匹配 00073810.1 还是 00073810?它应该在 GO.txt 中匹配到哪里?
READ_[ID].2、READ_[ID]还是GO:[ID]?你现在能明白用这么多缺失的细节来回答你的问题是多么困难吗? :p -
我再次道歉。包括小数在内的完整数字应与 READ_[ID] 匹配。我正在挖掘 GO:# 在输出文件中包含整行之后我可以隔离它。再次感谢您帮助我,我很迷茫......
标签: python file list search strip