在Python中将CSV转换为数组

12

我有一个包含以下内容的CSV文件。

0.000264,0.000352,0.000087,0.000549
0.00016,0.000223,0.000011,0.000142
0.008853,0.006519,0.002043,0.009819
0.002076,0.001686,0.000959,0.003107
0.000599,0.000133,0.000113,0.000466
0.002264,0.001927,0.00079,0.003815
0.002761,0.00288,0.001261,0.006851
0.000723,0.000617,0.000794,0.002189
我想在Python中将这些值转换为数组并保持相同的顺序(行和列)。我该怎么做才能实现这个目标?
我尝试了不同的函数,但最终都以错误告终。

不是一个错误,我不知道如何将CSV转换为数组。 - Edian Franklin Franco de los S
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为,一个具体的问题或错误以及在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小、完整和可验证的示例。 - MattDMo
@MattDMo 没有括号,你有任何想法如何将CSV转换为数组并保持相同的顺序吗? - Edian Franklin Franco de los S
你是想要返回一个嵌套式列表吗?例如 a = [[123, 234, 345], [456, 567, 678]],但是用你的数字替代其中的值? - CodeJockey
如果你没有括号,csv库将会进行解析,那么问题在哪里呢? - Padraic Cunningham
显示剩余2条评论
3个回答

19

你应该使用csv模块:

import csv

results = []
with open("input.csv") as csvfile:
    reader = csv.reader(csvfile, quoting=csv.QUOTE_NONNUMERIC) # change contents to floats
    for row in reader: # each row is a list
        results.append(row)

这将会得到:

[[0.000264, 0.000352, 8.7e-05, 0.000549], 
[0.00016, 0.000223, 1.1e-05, 0.000142], 
[0.008853, 0.006519, 0.002043, 0.009819], 
[0.002076, 0.001686, 0.000959, 0.003107], 
[0.000599, 0.000133, 0.000113, 0.000466], 
[0.002264, 0.001927, 0.00079, 0.003815], 
[0.002761, 0.00288, 0.001261, 0.006851], 
[0.000723, 0.000617, 0.000794, 0.002189]]

3

如果您的文件不包含括号

with open('input.csv') as f:
    output = [float(s) for line in f.readlines() for s in line[:-1].split(',')]
    print(output);

是的,我原来就是浮点数,数组中每个单元格一个。@MattDMo - Edian Franklin Franco de los S

2
csv模块就是为了解决这个问题而创建的。下面是直接从Python文档中摘取的该模块的实现。
import csv 
with open('file.csv','rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',', quotechar='|') 
    for row in reader:
        #add data to list or other data structure

分隔符是分隔数据条目的字符,而引用符是引用符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接