Python 如何查找位于标题标记之间的文件的标题

Python 如何查找位于标题标记之间的文件的标题,python,string,file,parsing,Python,String,File,Parsing,我有一些文件有“标题…”然后有“日记…”紧跟其后。每个文件的特定行是不同的,并且不是静态的。我正在尝试提取存在于“…标题…”和“…日志…”之间的所有信息。到目前为止,我只能画出包含“TITLE”的行,但对于某些文件,它会溢出到下一行 我推断我必须使用a=line.find(“标题”)和b=line.find(“日记”) 然后在范围(a,b)中为i设置一个for循环,该循环显示698-768之间字符串的所有数值,但只显示数字而不是字符串。如何显示字符串?那么,我该如何清理它,使其不显示“标题”、“

我有一些文件有“标题…”然后有“日记…”紧跟其后。每个文件的特定行是不同的,并且不是静态的。我正在尝试提取存在于“…标题…”和“…日志…”之间的所有信息。到目前为止,我只能画出包含“TITLE”的行,但对于某些文件,它会溢出到下一行

我推断我必须使用a=line.find(“标题”)和b=line.find(“日记”) 然后在范围(a,b)中为i设置一个for循环,该循环显示698-768之间字符串的所有数值,但只显示数字而不是字符串。如何显示字符串?那么,我该如何清理它,使其不显示“标题”、“日志”以及它们之间的空白和我需要的文本?谢谢

这是一个显示“TITLE”所在的单行

def extract_title():
f=开放(“GenBank1.gb”,“r”)
line=f.readline()
while line:
line=f.readline()
如果“标题”在第行中:
行。条(“标题”)
打印(行)
f、 关闭()
摘录(标题)
这是当前块,在单独的行上按递增顺序显示所有这些枚举

def extract_title():
f=开放(“GenBank1.gb”,“r”)
行=f.read()
a=行。查找(“标题”)
b=行查找(“日记账”)
行。带()
f、 关闭()
如果第行为“标题”,第行为“日记账”:
对于(a,b)范围内的i:
印刷品(一)
摘录(标题)
目前,我已经从698-768显示如下: 698 699 700 等 我想先弄到698 699 700, 然后将它们转换为字符串值
然后我想了解如何去除空白以及“标题”和“日志”值。谢谢

您不需要循环。只需使用切片:

line = 'fooTITLEspamJOURNAL'
start = line.find('TITLE') + 5 # 5 is len('TITLE')
end = line.find('JOURNAL')
print(line[start:end])
输出

spam
另一种选择是拆分

print(line.split('TITLE')[1]。split('JOURNAL')[0])

str.split()
返回列表。我们使用索引来获取所需的元素。 慢镜头:

part2 = line.split('TITLE')[1]
title = part2.split('JOURNAL')[0]
print(title)

我不确定我是否能在这里得到你想要的,但是如果我正确地理解了,你有一个类似于这个“标题659期刊”的字符串,想在中间得到价值吗?如果是这样,您可以使用切片表示法:

line = f.read()
a = line.find("TITLE") + 5 # Because find gives index of the start so we add length
b = line.find("JOURNAL")
value = line[a:b]
value = value.strip() # Strip whitespace
如果我们现在要返回值或将其打印出来,我们会得到:

'659'
类似的,如果要在日记账后获取值,可以再次使用切片表示法:

idx = line.find("JOURNAL") + 7
value = line[idx:] # Start after JOURNAL till end of string

你能解释一下打印报表中的内容吗?我很想知道这是怎么回事:-)我编辑了我的答案。而
print
是python3中的一个函数。这是python2中的语句。我的意思是打印函数的内部内容。我对strip命令不太熟悉。你能解释一下这是怎么回事吗?我阅读了python文档,但仍然不清楚它到底是如何工作的。谢谢@当然,它只删除字符串开头和结尾的空格,并将其保持在中间。所以,如果你有一个像“abc”这样的字符串,它会返回“abc”。