【问题标题】:Splitting a row from csv into lines in python将一行从csv拆分为python中的行
【发布时间】:2014-03-01 00:29:17
【问题描述】:

我有一个逗号分隔的 csv 文件,我只想输出第一行中的所有值,并在我输出的值前面加上一个“计数”数字。我的输出应该是这样的:

0 row1col1
1 row1col2
2 row1col3
...
n row1coln

我看不到如何拆分阅读器对象,因为拆分对它不起作用。

到目前为止我有:

import csv
reader_object = csv.reader(open('Film.csv'))

for i in range(1):
    print i,reader_object.next()

这给了我

0 ['value1', 'value2', 'value3']

【问题讨论】:

    标签: python python-2.7 csv


    【解决方案1】:

    尝试使用enumerate

    reader_object = csv.reader(open('Film.csv'))
    
    for i, line in enumerate(reader_object):
        print i,line
    

    如果你有这样的 csv:

    c1 c2 c3
    cc1 cc2 cc3
    ccc1 ccc2 ccc3
    

    如果你想一起加入一个列,你可以这样做:

    with open('Film.csv') as f:
        reader_object = csv.reader(f, delimiter=' ')
        i=0
        for line in reader_object:
            for x in line:
                print i, ''.join(x)
                i+=1   
    

    打印:

    0 c1
    1 c2
    2 c3
    3 cc1
    4 cc2
    5 cc3
    6 ccc1
    7 ccc2
    8 ccc3
    

    【讨论】:

      【解决方案2】:

      您可以像这样迭代第一行中的值:

      import csv
      reader_object = csv.reader(open('Film.csv'))
      
      for index, col_value in enumerate(reader_object.next()):
          print '{} {}'.format(index, col_value)
      

      输出:

      0 'value1'
      1 'value2'
      2 'value3'
      etc.
      

      csv.reader() 返回的Reader 对象包装了您给它的迭代器(在本例中为文件句柄),并提供了一个返回连续行的next() 方法;在返回它们之前,它通过从提供的Dialect 中拆分分隔符将每一行变成一个列表,如果没有给出,则使用逗号作为默认值。

      使用第一行的列值列表,我们可以使用 for 循环进行迭代并使用 enumerate() 在迭代时给我们一个递增的索引。

      【讨论】:

      • 这正是我想要的。谢谢
      【解决方案3】:

      你应该像下面的例子那样使用

      import csv
      i = 0
      with open('Film.csv', 'rb') as csvfile:
          file_reader = csv.reader(csvfile)
          for row in file_reader:
              for col in row:
                  print i, col.strip()
                  i += 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-08
        • 1970-01-01
        相关资源
        最近更新 更多