Python 需要帮助解析复杂的文本文件吗
我有一个结构如下的文本文件,我想用python提取数据帧中的数据。Dataframe应该具有PMID以及针对每个PMID的作者显示的所有文本Python 需要帮助解析复杂的文本文件吗,python,dataframe,data-processing,Python,Dataframe,Data Processing,我有一个结构如下的文本文件,我想用python提取数据帧中的数据。Dataframe应该具有PMID以及针对每个PMID的作者显示的所有文本 for lines in open('pubmed-cancerbiol.txt','r'): if(lines[0:4] == 'PMID'): print(lines) 数据格式 PMID-唯一的8位数字 xyz-文本(可能是多行) xyz-文本(可能是多行) 作者-文本(可能是多行) 作者-文本(可能是多行) PMID-唯
for lines in open('pubmed-cancerbiol.txt','r'):
if(lines[0:4] == 'PMID'):
print(lines)
数据格式
PMID-唯一的8位数字xyz-文本(可能是多行)
xyz-文本(可能是多行)
作者-文本(可能是多行)
作者-文本(可能是多行)
PMID-唯一的8位数字
xyz-文本(可能是多行)
xyz-文本(可能是多行)
作者-文本(可能是多行)
作者-文本(可能是多行)
下面是我在python中尝试过的代码——我能够提取所有PMID,但我无法找出针对每个PMID附加所有作者文本的逻辑
for lines in open('pubmed-cancerbiol.txt','r'):
if(lines[0:4] == 'PMID'):
print(lines)
您可以使用在字典中收集数据,将
PMID
作为键,将AUTHOR
s作为值
假设你从文件开始
from io import StringIO
fo = StringIO(
'''PMID- 12345678
xyz - text (might be multiple lines)
xyz- text (might be multiple lines)
AUTHOR- author1
AUTHOR- author2
PMID- 12345679
xyz - text (might be multiple lines)
xyz- text (might be multiple lines)
AUTHOR- author3
AUTHOR- author4''')
# with open(filename, 'r') as fo:
然后迭代行并填充字典
records = dict()
pmid = None
for line in fo.readlines():
if line.startswith('PMID-'):
pmid = line.split('-')[-1].strip()
records[pmid] = []
elif line.startswith('AUTHOR'):
records[pmid].append(line.split('-')[-1].strip())
创建数据帧时,您可以在传递给数据帧构造函数之前,让每个作者在一列中或加入列表
df = pd.DataFrame(
[', '.join(r) for r in records.values()],
index=records.keys()
)
输出
0
12345678 author1, author2
12345679 author3, author4
请用您尝试过的代码更新您的问题。对不起,更新了我到目前为止使用的代码,我更希望获得一些逻辑指导。一旦我得到了逻辑,我就能理解代码。@Bharath谢谢你,请习惯于提供有意义的数据样本,并且可以轻松粘贴到codeSure Richie中,我会记住这一点,事实上我正在阅读如何再现错误,并以更有意义的方式问问题。希望下次我能以更好的方式提问。再次感谢您对我的问题的指导和帮助。