制表符分隔fi中的列表字典

2024-09-27 04:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图将制表符分隔的文本文件加载到python程序中。它有以下格式

AAAAAA    1234    5678     90AB    QQQQ    JKL1
BBBBBB    QWER    TYUI     ASDF    QQQQ
CCCCCC    ZXCV    1234     PPPP
 ...
ZZZZZZ    1111

简而言之,每一行的列数是可变的,但总是至少有两列,并且一行中的每一列都是唯一的。我想使用的第一列作为键,并将其余的列加载到键指向它的列表中。我试着像其他线程中建议的那样查看csv模块,但是我还没有找到让它为我工作的方法。所以是的,很抱歉,如果这应该更明显,非常新的问题。


Tags: 程序格式制表符文本文件asdf正试图ccccccpppp
3条回答
>>> import csv
>>> with open('eggs.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter='\t', quotechar='|')
...     for row in spamreader:
...         print ', '.join(row)
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

这只是一个示例,说明如何获取分隔文件并打印行数据。 很明显,这可以扩展并放入一个dict或一个list或其他东西中。。

更多信息(以及从何处获取):http://docs.python.org/2/library/csv.html

import csv

d = {}
with open('tab_delimited_file.txt', 'rb') as csv_file:
    for row in csv.reader(csv_file, delimiter='\t'):
        d[row[0]] = row[1:]

print(d)

输出:

{'AAAAAA': ['1234', '5678', '90AB', 'QQQQ', 'JKL1'],
 'CCCCCC': ['ZXCV', '1234', 'PPPP'], 
 'BBBBBB': ['QWER', 'TYUI', 'ASDF', 'QQQQ'],
 'ZZZZZZ': ['1111']}

简单的str.split应该可以很好地分割列。使用它,您只需要读取每一行并将其拆分成列,其中第一个元素作为键,其余元素作为值:

with open(file) as fin:
     rows = ( line.split('\t') for line in fin )
     d = { row[0]:row[1:] for row in rows }

相关问题 更多 >

    热门问题