将列读取为列表
我有一个文本文件,里面的数据是用制表符分隔的。
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'对象不支持项赋值。
有什么建议吗?
5 个回答
0
在这里,
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')
所以,你可以用字符串列表来代替字符串。
6
如果你想把每一列的数据都放到变量里,首先要从一个列表开始:
per_row = []
for line in infile:
per_row.append(line.strip().split('\t'))
然后再把这个列表变成一个包含每一列的列表:
per_column = zip(*per_row)
现在这就是一个列表的列表;per_column[0]
就是第一列的数据。
不过,其实你应该使用 csv
模块 来读取表格数据,这样更方便。
可惜的是,你的代码离能正常工作的 Python 还差得远呢。你把几个变量都赋值为空字符串,然后又试图把它们当成列表来用。
2
对@Martijn Pieters的回答做个更正
应该是这样写的
per_row = []
for line in infile:
per_row.append(line.split('\t'))
然后再把它变成一列一列的数据:
per_column = zip(*per_row)
现在这就是一个列表的列表;per_column[0]
是第一列的数据。
这样就得到了我想要的结果。strip()
还可以去掉空白单元格。