如何读取CSV文件并将一行中的每个单元格添加到列表中?

时间:2019-01-15 14:31:53

标签: python csv

我有一个CSV文件,如下所示:

104 109 113 111 108 114
95  100 109 103 103 110

两行,每个数字都有自己的单元格。

如何读取每行CSV文件并将该行的每个单元格添加到列表中?

输出应如下所示:

List_1 = [104, 109, 113, 111, 108, 114]
List_2 = [95, 100, 109, 103, 103, 110]

我还需要列表中的数字作为整数而不是字符串。

6 个答案:

答案 0 :(得分:1)

我只将每一行存储在字典中

  d = {}
与open('rows.csv')作为f:
    对于enumerate(f,start = 1)中的行,行:
        d ['Line_%d'%row] = list(map(int,line.split()))

打印(d)
#{'Line_1':[104、109、113、111、108、114],'Line_2':[95、100、109、103、103、110]}
 

然后您可以像这样访问每一行:

 >>> d ['Line_1']
[104、109、113、111、108、114]
>>> d ['Line_2']
[95,100,109,103,103,110]
 

更新:

根据注释中的要求,如果文件使用分号; 作为分隔符,则可以使用 csv 库:

来自CSV导入阅读器的
 

d = {}
与open('rows.csv')作为f:
    csv_reader = reader(f,定界符=';')
    对于我,在enumerate(csv_reader,start = 1)中行:
        d ['Line_%d'%i] = list(map(int,line))

打印(d)
 

答案 1 :(得分:0)

只需使用map将字符串列表转换为整数列表并追加到输出列表中

final=[]
with open('test.csv') as f:
    for row in f:
        final.append(list(map(int,row)))

答案 2 :(得分:0)

您可以使用pandas read_csv功能来读取CSV文件。之后,您将有一个DataFrame对象。使用df.values.tolist(),您将获得所有行的列表作为列表。

答案 3 :(得分:0)

my.csv:    
1 2 3 4 5
6 7 8 9 0

Python:

with open("my.csv") as f:
    lists = [ list(map(int, i.split())) for i in f.readlines() ]

print(lists[0])
print(lists[1])

输出:

[1, 2, 3, 4, 5]  
[6, 7, 8, 9, 0]

答案 4 :(得分:0)

如果您想对数据进行以后的数学运算,则可以考虑使用numpy模块,可以使用numpy.loadtxt函数(请记住,实际上csv个文件纯文本文件)。 用法示例: test.csv是我创建的文件,它包含2行,每行3个值

1 2 3
4 5 6

然后您可以按照以下方式创建numpy数组:

import numpy as np
data = np.load('test.csv',int,delimiter=' ')

test.csv是文件名,int是您想要整数的信息,delimiter=' '表示文件中的值以空格分隔。您可以通过指定行的索引和元素的索引来访问numpy数组中的值

print(data[0][0]) #prints 1
print(data[1][2]) #prints 6

如果要获取list的值,只需将data[index_of_row]传递到list()

list1 = list(data[0])
list2 = list(data[1])
print(list1) #prints [1, 2, 3]
print(list2) #prints [4, 5, 6]

答案 5 :(得分:0)

您也可以使用csv.reader()模块来解决此问题。

with open(filename) as f:
    reader = csv.reader(f)
    next(reader)

    list_ = []

    for row in reader:
        list_.append(row)

要访问第一行(示例中的line_1)line_1 = list_[0]