我有一个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]
我还需要列表中的数字作为整数而不是字符串。
答案 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 库:
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]