如何在一行中打印特定数据

时间:2014-04-02 13:38:53

标签: python csv separator import-from-csv

我的CSV文件看起来像这样(这只是一个例子):

"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"
"1,2,3,4,5,6,7,8,9"

如何只打印1,3和7的值,而没有其余的?

每一行用“。”分隔。打印整行。

3 个答案:

答案 0 :(得分:0)

寻找这样的东西?

>>> from csv import reader
>>> with open("test.csv") as f:
...     data = [(x[0], x[2], x[6]) for x in reader(f)]
...     
... 

>>> print(data)
[('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7'),
 ('1', '3', '7')]
>>> 

或者,如果您只想在迭代时打印值:

>>> with open("test.csv") as f:
...     for row in reader(f):
...         print row[0], row[2], row[6]
...         
...     
... 
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
1 3 7
>>> 

答案 1 :(得分:0)

from csv import reader
from operator import itemgetter

ig = itemgetter(0, 2, 6) # Remember index starts at 0

with open("data.csv") as fin:
    for row in reader(fin):
        print ig(row)

答案 2 :(得分:0)

如果您想添加支票以查看该值是否在行中..或者我们不知道该行中的展示位置,那么我会按照msvalkon的回答稍微编辑一下:

with open("test.csv") as f:
    for row in reader(f):
        get_text = lambda val: val+" " if row.find(',' + val + ',') >= 0 else ""
        print get_text("1") + get_text("3") + get_text("7")

这样的值:

"1,2,3,4,5,6,7,8,9"
"1,2,4,5,6,7,8,9"
"1,2,3,4,5,6,8,9"
"2,3,4,5,6,7,8,9"

打印为:

1 3 7
1 7
1 3
3 7

而不是:

1 3 7
1 4 8
1 3 8
2 4 8