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

标签 python file

我正在解析一个文件(.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/

相关文章:

C#:导出到文本文件时,项目符号乱七八糟

python - 如何将 Python UUID 转换为字符串?

python - 列表中项目的重复索引

python - 如何使用 jinja 模板引擎将数组转换为字符串?

python - 将Python输出整齐地写入txt文件中?

android - 将 excel 文件上传到 Dropbox 或 Google Drive?

python - 将 3D 切片绘制为热图

python - python 模块变量如何工作?

file - symfony2 文件因表单错误而丢失

file - 如何在树莓派 Windows 10 物联网上访问从网络摄像头捕获的图像