将 CSV 转换为 Python 中的数组

Converting CSV into Array in Python

我有一个如下所示的 csv 文件。一个小的 csv 文件,我已经上传了它 here

我正在尝试将 csv 值转换为数组。

我的期望输出像

我的解决方案

results = []
with open("Solutions10.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)

但我得到了

ValueError: could not convert string to float: ' [1'

你可以这样做:

with open("Solutions10.csv") as csvfile:
    result = [eval(k) for k in csvfile.readlines()]

编辑:Karl 脾气暴躁,希望你这样做:

with open("Solutions10.csv") as csvfile:
    result = []
    for line in csvfile.readlines():
        line = line.replace("[","").replace("]","")
        result.append([int(k) for k in line.split(",")]

但你是程序员,所以你可以做你想做的事。如果您相信您的输入文件 eval 没问题。

您的 CSV 文件有问题。它只是不是 csv(逗号分隔值)。为此,您需要进行一些清洁工作:

import re

# if you expect only integers
pattern = re.compile(r'\d+')
# if you expect floats (uncomment below)
# pattern = re.compile(r'\d+\.*\d*')
result = []
with open(filepath) as csvfile:
    for row in csvfile:
        result.append([
            int(val.group(0))
            # float(val.group(0))
            for val in re.finditer(pattern, row)
        ])
        
print(result)

您也可以使用子字符串来解决这个问题,如果它对您来说更容易并且您确切地知道格式的话。

注意:我还看到有“eval”建议。请小心,因为如果您扫描 unknown/not 个受信任的文件,您可能会遇到很多麻烦...