2016-12-03 204 views
2

这里是我的csv文件的样本:在csv文件中打印行?

1 Ryan Giggs £13.50 23 Manchester Utd 
2 David Beckham £40.00 24 Manchester Utd 
3 Michael Owen £22.00 22 Liverpool 
4 Robbie Fowler £21.00 23 Leeds Utd 

我写了这个代码的意图,打印出的第一行:

import csv 

with open("Footballers.csv") as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print(row[1]) 

然而,这仅打印出第一个(技术上第二)列像这样:

Ryan 
David 
Micheal 
Robbie 

我怎样才能打印出第一行像这样?

1 Ryan Giggs £13.50 23 Manchester Utd 
+0

@roganjosh这将打印所有行,提问者只需要第一个。 – user312016

+0

@roganjosh当我第一次回答 – user312016

+0

@roganjosh时,我做了同样的事情。如果你只需要一个项目,为什么要设置for循环。这就是'next'所做的。除了'for'循环本身在幕后调用'next'。 –

回答

4

row[1]给出row中的第二件事(因为它从0开始计数)。你想要所有的row,用空格分开。您可以用" ".join(row)代替row[1]来修复它。 " "是我们希望每个项目被分开的东西,而row是我们要分开的列表。

完整的代码将

import csv 

with open("Footballers.csv") as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print(" ".join(row)) 
+0

您的代码将打印每一行。 – user312016

5

下降for循环和使用next如果你只想要打印的第一行,作为对象的for迭代,并且将陆续提供的每一行:

with open("Footballers.csv") as f: 
    reader = csv.reader(f) 
    print(next(reader)[0]) # default separator is a comma so you only get one item in the row 

reader对象是迭代器并在其上调用next将提供下一个项目,在这种情况下是第一行。请注意,这会促进迭代器,随后的迭代将从第二行开始。

2

使用加入

import csv 

with open("Footballers.csv") as f: 
    reader = csv.reader(f) 
    for row in reader: 
    print(' '.join(row)) 
+0

每一行都是仅包含项目的列表,因为默认分隔符是逗号。调用'加入'可能不需要 –

+0

你能详细说明吗? – SeedofWInd