亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要幫助解析復雜的文本文件

需要幫助解析復雜的文本文件

大話西游666 2023-07-18 10:09:53
我有一個文本文件,其結構如下所示,我想使用 python 提取數據框中的數據。數據框應具有 PMID 以及針對每個 PMID 的作者顯示的所有文本。數據格式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)
查看完整描述

1 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

PMID您可以使用as 鍵和AUTHORs 作為值來收集字典中的數據。


假設您從文件開始


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(records)每個作者放在一列中或在傳遞給數據框構造函數之前加入列表


df = pd.DataFrame(

    [', '.join(r) for r in records.values()],

    index=records.keys()

)

輸出


                         0

12345678  author1, author2

12345679  author3, author4


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號