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

Python:读取csv文件并将列保存为变量,python,csv,file-io,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并将前两列保存为变量。 这就是我到目前为止所做的:

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”,第二列存储为“peaks”,以便将其存储为“peaks”,例如,frames[2]将第二个值保存在第一列中,我可以引用它


谢谢。

这里有一种方法:

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文件的前两列。但这应该是你想要的<代码>行[0]是该行第一列中的值,同样,
行[1]
是第二列


现在,如果您想处理未知数量的列,您必须使用另一种方法(比如字典)。

这里有一种方法:

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文件的前两列。但这应该是你想要的<代码>行[0]是该行第一列中的值,同样,
行[1]
是第二列


现在,如果你想做一个未知数量的列,你必须使用另一种方法(比如字典)。

使用你已经在使用的
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])
import csv
with open('test.csv','rb') as file:
    rows = csv.reader(file, 
                      delimiter = ',', 
                      quotechar = '"')
    data = [data for data in rows]
再次假设您只关心每行的前两个元素

这里有一个方法可以将所有内容都放入数组中,这里称为
data
。这对于大文件来说相对较快

阵列

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])
import csv
with open('test.csv','rb') as file:
    rows = csv.reader(file, 
                      delimiter = ',', 
                      quotechar = '"')
    data = [data for data in rows]

使用您已经在使用的
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])
import csv
with open('test.csv','rb') as file:
    rows = csv.reader(file, 
                      delimiter = ',', 
                      quotechar = '"')
    data = [data for data in rows]
再次假设您只关心每行的前两个元素

这里有一个方法可以将所有内容都放入数组中,这里称为
data
。这对于大文件来说相对较快

阵列

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])
import csv
with open('test.csv','rb') as file:
    rows = csv.reader(file, 
                      delimiter = ',', 
                      quotechar = '"')
    data = [data for data in rows]


最好将
dict
标记化,并将键用作名称,将值用作列。重要的是,这些是变量,还是应该是
dict
的成员?你知道之前变量的名称吗?@tdelaney同一列上的所有变量都有相同的变量名称和不同的值才有意义,不是吗?@alfasin肯定,但这与我的问题无关。csv文件通常都有一个标题行,然后作为列名使用。这里是这样吗?最好标记为
dict
,并使用键作为名称,值作为列。重要的是,这些是变量还是应该是
dict
的成员?你知道之前变量的名称吗?@tdelaney同一列上的所有变量都有相同的变量名称和不同的值才有意义,不是吗?@alfasin肯定,但这与我的问题无关。csv文件通常都有一个标题行,然后作为列名使用。这里是这样吗?谢谢,假设文件中的前两列非常好。问题,如果我想访问列中的特定元素,我可以执行类似于第[1][2]行的操作吗?实际上,您不能<代码>行是一个一维列表,因此您所能做的就是
行[1]
。现在,您可以执行类似于
csv\u-dic[4][1]
的操作,其中
csv\u-dic[4]
是第五行。那么csv\u-dic[4][1]会在第二列中给我第五个元素吗?如第2列第5行所示?好的,那么像波峰[1]和波峰[2]这样的东西到底能保持什么呢?
peaks[1]
将具有
csv\u dic[1][1]
。第二行的第二列。同样地,
peaks[2]
将具有
csv\u dic[2][1]
frames
是第一列,因此
frames[2]
csv\u dic[2][0]
。谢谢,假设文件中的前两列非常好。问题,如果我想访问列中的特定元素,我可以执行类似于第[1][2]行的操作吗?实际上,您不能<代码>行是一个一维列表,因此您所能做的就是
行[1]
。现在,您可以执行类似于
csv\u-dic[4][1]
的操作,其中
csv\u-dic[4]
是第五行。那么csv\u-dic[4][1]会在第二列中给我第五个元素吗?如第2列第5行所示?好的,那么像波峰[1]和波峰[2]这样的东西到底能保持什么呢?
peaks[1]
将具有
csv\u dic[1][1]
。第二行的第二列。同样地,
peaks[2]
将具有
csv\u dic[2][1]
frames
是第一列,因此
frames[2]
csv\u dic[2][0]
。如果我想存储前两列的所有元素(在大量行中)该怎么办?如果我想存储前两列的所有元素(在大量行中)该怎么办?