gpt4 book ai didi

python - 将已解析的文件导出到python中的文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:30 24 4
gpt4 key购买 nike

我正在解析一个文件(.GTF 文件),但现在我无法将其导出到文本文件中。到目前为止,我已经制作了一个完全像这样的列表列表:

pl = [
[' id "ENS001" ', ' name "EGSB" ', ' Trans "TTP" ', ' ' ],
[' id "EN02" ', ' name "EHGT" ', ' Trans "GFT" ', ' ' ]
]

当然,嵌套列表的长度是相等的(16),父列表中有 111559 个嵌套列表。正如您在上面的示例中看到的,嵌套列表有一些对,每对有 2 个单元,用制表符分隔。

在我的文本文件中,每个嵌套列表都是一行(只有每对的第二个单元),其中的每个项目将构成列。第一个单位在所有嵌套列表中都是相似的,它们将是列名,因此它们不在行中。此外,我只需要每个嵌套列表的前 8 项(共 16 项)我也使用 python 2.6.6。我需要这样的文件。

id      name  Trans

ENS001 EGSB TTP

EN02 EHGT GFT

最佳答案

首先,您可以使用 shlex 拆分您的列表以删除引号:

>>> l=[[shlex.split(i) for i in t i!=' '] for t in pl]

[[['id', 'ENS001'], ['name', 'EGSB'], ['Trans', 'TTP']], [['id', 'EN02'], ['name', 'EHGT'], ['Trans', 'GFT']]]

然后压缩您的内部列表以获得以下内容:

>>> z= [zip(*i) for i in l]
[[('id', 'name', 'Trans'), ('ENS001', 'EGSB', 'TTP')], [('id', 'name', 'Trans'), ('EN02', 'EHGT', 'GFT')]]

然后获取行:

>>> rows= [i[1] for i in z]
[('ENS001', 'EGSB', 'TTP'), ('EN02', 'EHGT', 'GFT')]

最后将你的数据写入文件:

 with open('out.txt','w') as f :
f.write (' '.join(z[0][0])+'\n')
for i in rows:
f.write (' '.join(i)+'\n')

但作为一种更有效的方法,您可以将所有综合列表放在一个列表中并拒绝单独存储它们:

rows=[zip(*i) for i in [[shlex.split(i) for i in t if i!=' '] for t in pl]]
with open('out.txt','w') as f :
f.write (' '.join(rows[0][0])+'\n')
for i in rows:
f.write (' '.join(i[1])+'\n')

关于python - 将已解析的文件导出到python中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27692949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com