如何将csv文件导入数据数组?

问题描述:

我在一个脚本中有一行代码,它将数据从一个文本文件中导入,这些文本文件之间有许多空间值之间的空格,以便以后使用。如何将csv文件导入数据数组?

textfile = open('file.txt') 
data = [] 
for line in textfile: 
    row_data = line.strip("\n").split() 
    for i, item in enumerate(row_data): 
     try: 
      row_data[i] = float(item) 
     except ValueError: 
      pass 
    data.append(row_data) 

我需要将其从文本文件更改为csv文件。我不想仅仅改变这个文本以逗号分隔(因为如果它们在引号中,某些值可以有逗号)。幸运的是,我看到有一个我可以导入的csv库可以处理这个问题。

import csv 
with open('file.csv', 'rb') as csvfile: 
    ??? 

如何将csv文件加载到数据数组中?

如果它的确与众不同,这是该数据将如何使用:

row = 0 
for row_data in (data): 
    worksheet.write_row(row, 0, row_data) 
    row += 1 
+0

你有2个任务:1)我需要将其从文本文件更改为csv文件; 2)如何将csv文件加载到数据数组中?开始发布您的初始'file.txt'内容 – RomanPerekhrest

假设CSV文件分隔用逗号,使用csv模块在Python 3的最简单的方法很可能是:

import csv 

with open('testfile.csv', newline='') as csvfile: 
    data = list(csv.reader(csvfile)) 

print(data) 

对于Python 2,使用open('testfile.csv', 'rb')打开文件。

+0

谢谢!我有Python 2,所以我修改了建议。 'data ='行是否重申了csv中的每一行?我可以直接将数据放入'worksheet.write_row(row,0,row_data)'行,而不必先将它放入数组,然后再读取数组的每一行? – GFL

+0

是的,它看起来像你的问题结束时的循环会起作用(尽管你不需要'数据'周围的括号)。从['xlsxwriter.write_row()'](http://xlsxwriter.readthedocs.io/worksheet.html#worksheet-write-row)文档看来,它也可以在一次调用中更高效地完成:即' worksheet.write_row(row,0,data)'而不是使用循环并进行多次调用,每次调用一次一行。 – martineau

您可以使用大熊猫库或numpy的读取CSV文件。如果你的文件是制表符分隔的,那么在下面的sep和delimiter参数中用'\ t'代替逗号。

import pandas as pd 
myFile = pd.read_csv('filepath', sep=',') 

或者

import numpy as np 
myFile = np.genfromtxt('filepath,' delimiter=',')