我有一个txt文件,我有很多信息,但我只想要那些以这样开头的文件:
1. #BEGIN_DRUGCARD DB00001
2. # Generic_Name:
Lepirudin
我想在第一种情况下获得从DB00001开始的内容。 在第二种情况下,第二行中的内容,然后将它们保存到文本文件中。
我有以下脚本,但它不起作用,我收到以下错误:
追踪(最近一次通话): 文件“/ home / viki / workspace / prbb / drugnames”,第22行,in drug_id = line() TypeError:'str'对象不可调用 有任何想法吗?
import re
regex1 = '#BEGIN_DRUGCARD '
regex2 = '# Generic_Name:'
x=y=0
e = open ('drugbank.txt', 'r')
f = open ('Drug_output.txt', 'w')
for line in e.readlines():
if re.match(regex1, line):
y=1
continue
elif re.match(regex2, line):
x=1
continue
if y==1:
drug_id = line()
if x==1:
generic_name = line.split()
f.write('drug_id')
f.write('\n\n')
f.write('generic_name')
答案 0 :(得分:1)
line()
表示“调用名为line
的函数”,当然这不起作用,因为line
是一个字符串。
但是您的代码还存在其他一些问题。它只会找到drugbank.txt
文件中的最后一个匹配项,因为它会在向文件写入任何内容之前覆盖所有先前的案例,当它写入内容时,它会写入文本drug_id
而不是文本的内容。变量drug_id
)。此外,您使用split()
错误。你读过Python教程吗?
假设您的drugbank.txt
包含多种药物,并且每种药物的ID和通用名称始终相互关联,您可以这样做:
import re
regex = r'#BEGIN_DRUGCARD\s*(.*)\s*# Generic_Name:\s*(.*)'
with open ('drugbank.txt', 'r') as infile:
drugs = infile.read()
results = re.findall(regex,drugs)
with open('Drug_output.txt', 'w') as outfile:
for match in results:
outfile.write(match[0] + "\n" + match[1] + "\n\n")