如何在python中从csv文件中拆分列

时间:2017-09-25 08:59:12

标签: python csv

我在完成编码挑战时遇到困难,如果可能的话,我希望得到一些帮助。

我有一个包含1000个姓氏,姓氏,电子邮件,性别和女性(出生日期)的CSV文件,我正试图将每一栏分开。 我的第一个挑战是打印文件的前10行,我是这样做的;

counter = 0 
print("FORENAME SURNAME EMAIL GENDER DATEOFBIRTH","\n")
csvfile = open ("1000people.csv").read().splitlines()
for line in csvfile:
    print(line+"\n")
    counter = counter + 1
    if counter >= 10:
        break

这可以工作并按预期打印10个第一行。第二个挑战是做同样的事情,但按字母顺序排列,只有名字。我只能设法使用以下字母顺序打印前10行:

counter = 0 
print("FORENAME SURNAME EMAIL GENDER DATEOFBIRTH","\n")
csvfile = open ("1000people.csv").read().splitlines()
for line in sorted(csvfile):
    print(line+"\n")
    counter = counter + 1
    if counter >= 10:
        break

上述代码的结果:

>>> 
FORENAME SURNAME EMAIL GENDER DATEOFBIRTH 

Abba,Ebbings,aebbings7z@diigo.com,Male,23/06/1993

Abby,Powney,apowneynj@walmart.com,Female,01/03/1998

Abbye,Cardus,acardusji@ft.com,Female,30/10/1960

Abeu,Chaize,achaizehi@apple.com,Male,25/06/1994

Abrahan,Shuard,ashuardb5@zdnet.com,Male,09/12/1995

Adah,Lambkin,alambkinga@skyrock.com,Female,21/08/1992

Addison,Shiers,ashiersmg@freewebs.com,Male,13/07/1981

Adelaida,Sheed,asheedqh@elpais.com,Female,06/08/1976

Adelbert,Jurkowski,ajurkowski66@amazonaws.com,Male,27/10/1957

Adelice,Van Arsdall,avanarsdallqp@pagesperso-orange.fr,Female,30/06/1979

那么有没有办法将列分开,以便在选择时只打印一个特定的列? 感谢您的阅读和回复,如果您这样做。

1 个答案:

答案 0 :(得分:1)

csv模块有助于拆分列。实现你想要的pythonic方法是:

import csv
with open("1000people.csv") as f:
    cr = csv.reader(f)  # default sep is comma, no need to change it
    first_10_rows = [next(cr,[]) for _ in range(10)]

next(cr,[])指令在列表推导中消耗一行,如果文件小于10行,则会得到一个空行而不是异常(这是第二个参数的目的)

现在first_10_rows是包含您的值的列表列表。行情&由于csv模块,逗号被正确剥离。