我是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']
。现在我希望这个输出可以作为数组轻松访问以进行进一步的计算。例如 - 我应该在true
print(newArray[4])
答案 0 :(得分:0)
我认为您的方法可以写成:
def read_csv(self):
return list(open('myfile.csv'))
或
def read_csv(self):
with open('myfile.csv') as f:
return list(f)
如果您需要尽快关闭文件描述符,因为等待Python GC会影响您的性能。请参阅我对此的评论。
要将逗号分隔值的字符串转换为值列表,请执行以下操作:
comma_separeted.split(',')
可以帮助您了解Python标准库提供的内容here
答案 1 :(得分:0)
print(csvFileArray [0])的输出将是[' 11043299,1,2,1,true']。
我不这么认为;这是一个字符串的列表,而不是五个元素。例如。
$ echo '11043299,1,2,1,true' >> myfile.csv
In [1]: import csv
In [2]: with open('myfile.csv') as f:
...: reader = csv.reader(f)
...: rows = [row for row in reader]
...:
In [3]: rows
Out[3]: [['11043299', '1', '2', '1', 'true']]
这是你想要做的吗?
In [4]: rows[0][4]
Out[4]: 'true'
答案 2 :(得分:0)
查看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的内容很好地放入字典中。
In [2]: data
{'correct_answers': [0, 3, 3, 2],
'cross_bridge': [False, True, True, False],
'favorite_color': ['orange', 'green', 'blue', 'yellow'],
'first_name': ['Dirk', 'King', 'Lancelot', 'Sir'],
'last_name': ['Diggler', 'Arthur', 'du Lac', 'Galahad']}
In [3]: data['cross_bridge'][0]
Out[3]: False
或者,如果您确实希望每一行都是一个列表,则可以改为使用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
希望有所帮助!