我的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的值,而没有其余的?
每一行用“。”分隔。打印整行。
答案 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