首页 > 解决方案 > 如何找到位于标题标签之间的文件的标题

问题描述

我有一些文件有“TITLE ...”然后有“JOURNAL ...”紧随其后。特定的行是多种多样的,并且每个文件都不是静态的。我正在尝试提取“... TITLE ...”和“... JOURNAL ...”之间存在的所有信息。到目前为止,我只能拉出包含“TITLE”的行,但对于某些文件,它会溢出到下一行。

我推断我必须使用 a=line.find("TITLE") 和 b=line.find("JOURNAL") 然后设置 for i in range(a,b) 的 for 循环:它显示所有数字字符串的值从 698 到 768,但只显示数字而不是字符串。如何显示字符串?那么我该如何清理它以不显示“TITLE”、“JOURNAL”以及这两者之间的空格和我需要的文本?谢谢!

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

def extract_title():
    f=open("GenBank1.gb","r")
    line=f.readline()
    while line:
        line=f.readline()
        if "TITLE" in line:
            line.strip("TITLE   ")
            print(line)   
    f.close()
extract_title()

这是在单独的行上按递增顺序显示所有这些数字的当前块。

def extract_title():
    f=open("GenBank1.gb","r")
    line=f.read()
    a=line.find("TITLE")
    b=line.find("JOURNAL")
    line.strip()
    f.close()

    if "TITLE" in line and "JOURNAL" in line:
        for i in range(a,b):
            print(i)


extract_title()

目前,我从 698-768 显示如下:698 699 700 等...我想先让它们像 698 699 700,然后将它们转换为它们的字符串值,然后我想了解如何去除空格和“TITLE”和“JOURNAL”值。谢谢!

标签: pythonstringfileparsing

解决方案


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

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)

推荐阅读