【发布时间】:2019-10-21 09:10:15
【问题描述】:
我正在尝试在 python 中解析一个文件。我有一个这样的文件:
ID number Name
LOI_3456 Bacteria1
HUI_6478 Bacteria1
PETY_3564 Bacteria1
所以首先我收集了每个细菌的所有 ID_number:
import re
f = open("file.tsv","r")
f.readline()
for line in f.readlines():
line = li.rstrip("\n")
line = li.rsplit("\t")
ID_number = li[0]
现在在另一个文件中,我有这样的内容:
d2234 d45564 d223098 d50923 PETY_354_d3456 d76533
d2635 PETY_354 d88593 d324623 HUI_6478_d3553d35626
...
现在我在同一个脚本中得到了这个:
cnt = 0
f2 = open("file2","r")
for li in f2.readlines():
li = li.rstrip("\n")
pattern_id_number = re.search(ID_number+'_\d+', li)
if pattern_id number in li:
print("line :",n, li)
但这不起作用。我想要的是保留与我的 pattern_id_member 匹配的行。
编辑:
当我这样做时:
if pattern_id :
print(li)
而不是
if pattern_id in li:
print(li)
什么都没有打印...
【问题讨论】:
-
使用
if pattern_id_number:而不是if pattern_id number in li:。此外,您可以只使用for li in f2来遍历file2文件中的行。 -
你是说第一个文件的ID号会包含在第二个文件中?
-
第一个文件的 Id_number 出现在文件 2 的某些行上,但后面有一个下划线
-
请注意:你在
pattern_id_number = re.search(ID_number+'_\d+', li)中使用了pattern_id_number,然后你在if pattern_id number in li:中检查了pattern_id number。看到错字了吗?