我是一个绝对的编程新手,试图使用一些 csv 文件。虽然我总体上想要做的事情更复杂,但我目前被困在这个问题上:
我拥有的 csv 文件包含固定数量的“列”和可变数量的行。我想要做的是打开目录中的每个 csv 文件,同时在内存中将文件值存储到 2d 列表中,然后从该列表中提取一个“列”数据。通过循环执行此操作,我可以附加一个列表,其中包含来自每个 csv 文件的一列数据。
当我对单个文件执行此操作时,它可以工作:
csvFile = 'testdata.csv'
currentFile = csv.reader(open(csvFile), delimiter=';')
errorValues = []
for data in currentFile:
rows = [r for r in currentFile] #Store current csv file into a 2d list
errorColumn = [row[34] for row in rows] #Get position 34 of each row in 2D list
errorColumn = filter(None, errorColumn) #Filter out empty strings
errorValues.append(errorColumn) #Append one 'column' of data to overall list
当我尝试为目录中的所有文件循环它时,我收到“列表索引超出范围”错误:
dirListing = os.listdir(os.getcwd())
errorValues = []
for dataFile in dirListing:
currentFile = csv.reader(open(dataFile), delimiter=';')
for data in currentFile:
rows = [r for r in currentFile] #Store current csv file into a 2d list
errorColumn = [row[34] for row in rows] #Get position 34 of each row in 2D list
errorColumn = filter(None, errorColumn) #Filter out empty strings
errorValues.append(errorColumn) #Append one 'column' of data to overall list
errorColumn = [] #Clear out errorColumn for next iteration
错误发生在“errorColumn = [row[34] for row in rows]”处。我尝试了各种方法来做到这一点,总是未能出现索引超出范围错误。问题不在于我的 csv 文件,因为我使用工作脚本一一测试它们。可能是什么问题呢?
非常感谢您的帮助。