Python:读取csv文件并将列保存为变量

时间:2015-11-25 23:47:02

标签: python csv file-io

我想读取csv并将前两列保存为变量。 这就是我到目前为止所做的:

import sys, os, subprocess, shutil, time, string #these are for other things in the program :)
import csv

csvfile = list(csv.reader(open('test.csv')))   #read in the csv file

csv_dic = []

for row in csvfile:
        csv_dic.append(row);

for row in csv_dic:
       for column in row:
             print column, "***",   #I can print out the column
       print

我可以打印出列,但是想拥有它,这样我就可以为列'数组提供不同的变量。

例如,我想将第一列存储为'帧'第二个作为峰值',所以要这样,例如,frames [2]在第一列中保存第二个值,我可以引用它。

谢谢。

2 个答案:

答案 0 :(得分:3)

这是一种方法:

frames = []
peaks = []

for row in csv_dic:
    frames.append(row[0])
    peaks.append(row[1])
    for column in row:
        print column, "***",   #I can print out the column
    print

请注意,我做了一个很大的假设:您想要的两列完全是CSV文件的前两列。但这应该做你想要的。 row[0]是该行第一列中的值,同样,row[1]是第二列。

现在,如果你想做一个未知数量的列,你将不得不使用另一种方法(也许是字典)。

答案 1 :(得分:0)

与您已经使用的CSV模块相关。这是一个字典方法和一个数组方法。

<强>字典

import csv
var1 = "frames"
var2 = "peaks"
csv_dic={var1:[], var2:[]}
csvFile = csv.reader(open('test.csv', 'rb'))
for row in csvFile:
  csv_dic[var1].append(row[0])
  csv_dic[var2].append(row[1])

再次假设您只担心每行的前两个元素。

这是一种方法,可以将您的所有内容放入数组中,此处称为data。这对于大文件来说相对较快。

<强>阵列

import csv
with open('test.csv','rb') as file:
    rows = csv.reader(file, 
                      delimiter = ',', 
                      quotechar = '"')
    data = [data for data in rows]