以列表形式读取列

2024-05-23 13:42:37 发布

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

我有txt格式的数据。制表符分隔的数据

here
     a b c
     e f g
tere
     x y z
     w t y

我需要把这些列读成列表。就像

col1 = ['here', '', '', tere, '', '']
col2= ['', 'a', 'e', '', 'x'.'w']

等等。

我用过

import re

infile = open('text.txt', 'r')
i=0
a0='';a1='';a2='';a3='';a4='';a5='';a6='';a7='';
for line in infile:
    [a1[i],a2[i],a3[i],a4[i],a5[i],a6[i],a7[i],a8[i]] = line.split('\t')
    i+=1

它说“str”对象不支持项分配。

有什么建议吗?


Tags: 数据txta2herea1格式lineinfile
3条回答

如果希望为每个列的变量分配所有数据,请从列表开始:

per_row = []
for line in infile:
    per_row.append(line.strip().split('\t'))

然后把它变成一个的列表:

per_column = zip(*per_row)

这是一个列表列表;per_column[0]是第一列数据。

不过,您确实希望使用^{} module来读取表格数据。

不幸的是,您的代码与工作Python的距离还不够近。您为几个变量分配了空字符串,然后尝试将它们用作列表。

更正@Martijn Pieters答案

应该是这样的

per_row = []
for line in infile:
    per_row.append(line.split('\t'))

然后将其转换为列列表:

per_column = zip(*per_row)

这是一个列表列表;per_column[0]是第一列数据。

这就是我想要的结果。strip()还会删除空白单元格。

在这里

a0='';a1='';a2='';a3='';a4='';a5='';a6='';a7='';

一旦将变量声明为空字符串,就不能单独更改字符串(逐个字符),因为它们是不可变的字符串。

[a1[i],a2[i],a3[i],a4[i],a5[i],a6[i],a7[i],a8[i]] = line.split('\t')

因此,可以使用字符串列表而不是字符串。

相关问题 更多 >