用python将列表存储到数组中

2024-09-29 22:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,正在尝试拆分列表并将其存储为数组。在

我有一个csv文件,我正在读取并将每一行存储为一个列表。这些行中的每一行都用逗号分隔,我希望将这些值存储到一个数组中

这是我当前检索csv文件中的行的代码。我被困在尝试解析每一行以存储到一个数组中

def read_csv(self):
    csvFileArray=[]
    with open('myfile.csv','rb') as csvfile:
        bufferreader=csv.reader(csvfile,delimiter=',')
        for row in bufferreader:
            csvFileArray.append(row)
    return csvFileArray

print(csvFileArray[0])的输出将是['11043299,1,2,1,true']。现在,我希望这个输出可以作为数组方便地访问,以便进行进一步的计算。例如,当我print(newArray[4])时,我应该打印true


Tags: 文件csvcsvfile代码true列表readdef
3条回答

看看CSV模块。这个csv.DictReader类将CSV文件行放入一个字典,其中头行字段作为字典键。但是,请注意CSV模块将数据读取为字符串,因此您可能需要进行一些类型转换。在

import csv

with open('favorite_color.csv', 'rb') as csvfile:
    reader = csv.DictReader(csvfile)
    data = {}
    for row in reader:
        for field, value in row.iteritems():
            if not field in data:
                data[field] = [value]
            else:
                data[field].append(value)
data['correct_answers'] = [int(val) for val in data['correct_answers']]
boolval = {'true': True, 'false': False}
data['cross_bridge'] = [boolval[val.lower()] for val in data['cross_bridge']

它可以很好地将CSV的内容放入字典中。在

^{pr2}$

或者,如果您确实希望每一行都是一个列表,那么可以使用csv.reader()而不是:

import csv

with open('favorite_color.csv') as csvfile:
    reader = csv.reader(csvfile)
    data = []
    for row in reader:
        data.append(row)

它提供了一个列表列表:

In [5]: data
Out[5]: 
[['first_name',
  'last_name',
  'favorite_color',
  'correct_answers',
  'cross_bridge'],
 ['Dirk', 'Diggler', 'orange', '0', 'False'],
 ['King', 'Arthur', 'green', '3', 'True'],
 ['Lancelot', 'du Lac', 'blue', '3', 'True'],
 ['Sir', 'Galahad', 'yellow', '2', 'False']]

以下是CSV模块的文档:

https://docs.python.org/3.5/library/csv.html#csv.reader

你在问题中提到了一个array。我不确定你真的想要这个。Python数组必须包含相同的数据类型。给出的例子没有。以下是Python数组的文档:

https://docs.python.org/2/library/array.html

希望有帮助!在

我认为你的方法可以写成:

def read_csv(self):
        return list(open('myfile.csv'))

或者

^{pr2}$

如果需要尽快关闭文件描述符,因为等待Python GC会影响性能。看我的评论。在

要将逗号分隔的值字符串转换为值列表,只需执行以下操作:

comma_separeted.split(',')

可能对您了解Python标准库提供的here很有用

^{bq}$

我不这么认为;这是一个字符串的列表,而不是五个元素。在

$ echo '11043299,1,2,1,true' >> myfile.csv

^{pr2}$

这就是你想做的吗?在

In [4]: rows[0][4]
Out[4]: 'true'

相关问题 更多 >

    热门问题