python - 如何找到位于标题标签之间的文件的标题
问题描述
我有一些文件有“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”值。谢谢!
解决方案
你不需要循环。只需使用切片:
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)
推荐阅读
- javascript - 将 JSON 对象从后台脚本传递到 chrome 扩展中的内容脚本
- r - 具有不同移动窗口大小的向后移动平均值,以保持输出序列大小与 R 中的原始时间序列相同
- c# - ObjectInstance 到模型类
- swift - 地图是未解析的标识符
- html - 使用 DIV 标记的 HTML 页面格式
- java - Java 8 将对象转换为由 VALUE 分隔的字符串
- r - 使用生成的随机数据重复一个过程,并将结果保存在 R 中的数据框中
- javascript - 如何使用 Parse Server 错误从另一个浏览器选项卡检测另一个会话正在进行中
- reactjs - 在 react native 中使用 redux 时找不到变量 addproduct 错误
- firebase - 'Future 类型的值
'不能分配给'String'类型的变量