使用Python循环CSV的内容

时间:2014-12-02 12:04:15

标签: python csv

在Python中,我想在简单的CSV中列出每个数字......

CSV:

07555555555, 07555555551

这就是我的尝试:

for number in csv.reader(instance.data_file.read().splitlines()):
    print(number)

然而,这会将整个事物输出为像这样的一个字符串......

['07446164630', '07755555555']

为什么?

我也尝试像这样循环

for i, item in enumerate(csv.reader(instance.data_file.read().splitlines())):
    print(i)
    print(item)

我不确定我是否完全理解我做错了什么,所以在解释如何打印文件中的每个数字方面有任何帮助都是惊人的。

2 个答案:

答案 0 :(得分:2)

csv.reader解析CSV的每一行,因此您的循环正在迭代CSV文件的。由于两个数字都在一行中,因此可以将它们放在一个数组中。如果要迭代每行的值,请使用另一个嵌套的for循环。:

for line in csv.reader(instance.data_file.read().splitlines()):
    for item in line:
        number = int(item)
        print(number) # or whatever you want

或使用enumerate获取每个数字的索引:

for line in csv.reader(instance.data_file.read().splitlines()):
    for index, item in enumerate(line):
        number = int(item)
        print(index, number) # or whatever you want

答案 1 :(得分:-1)

使用 numpy的展平模块将矩阵转换为1D数组:

import numpy as np
data = np.loadtxt(file_name, delimiter=',').flatten()
for item in data: print(item)