在 Python 2.7.3 中将 csv 文件附加到一个空列表中 - 获取一个空列表

Posted

技术标签:

【中文标题】在 Python 2.7.3 中将 csv 文件附加到一个空列表中 - 获取一个空列表【英文标题】:appending csv file into an empty list in Python 2.7.3 - getting an empty list back 【发布时间】:2012-11-20 11:09:03 【问题描述】:

我正在尝试打开一个 csv 文件并将行追加到列表中。我尝试了一些不同的东西,但我总是得到一个空列表。有什么建议吗?

>>> googleData = []   
dataFile = open("googlePrices.csv", 'rU')  
for row in dataFile:   
    googleData.append(row)

>>> googleData
[] 

【问题讨论】:

在每个追加之前在其中放置一个打印语句:print row。您确定您正在获取数据吗? 我刚刚在一个 csv 测试文件上运行了你的确切代码,它工作正常。另外,请查看 stdlib cvs module。 刚刚检查了文件,它应该在哪里,看起来没有为我正确打开文件,但检查了 excel 中的 csv,它看起来很好,不知道发生了什么......跨度> 我们也不知道发生了什么。你试过我建议的打印语句吗?如果是无法正常打开的问题,您会收到IOError 是的,我也试过了,但没有错误,dropbox.com/s/sz885fohzzj7fga/googlePrices.csv 如果有人可以检查它是否可以正常使用此代码,那就是我使用的文件 【参考方案1】:

使用 csvreader http://docs.python.org/2/library/csv.html

import csv
csvr = csv.reader(open('googlePrices.csv' , 'r'))
for row in csvr:
   ....

【讨论】:

问题出在python中...由于某种原因,在python重新安装后完全相同的代码可以正常工作...但仍然不确定是什么原因导致...可能csv库已损坏。谢谢大家的帮助【参考方案2】:

一个好的做法是从 CSV 或任何其他文件中读取 每一行。..

一个可能的解决方案是这样的:

def main():
        with open('sample.csv' , 'r') as f:
                my_list = []
                for line in f.readlines():
                        my_list.append(line)
                print my_list

if __name__ == '__main__':
        main()

更新:

由于 readlines() 将文件的每一行都读入内存,所以这个答案没有优化..

【讨论】:

-1: readlines 比仅仅遍历文件对象更糟糕,因为它将文件的每一行都读入内存。【参考方案3】:
googleData = []   
dataFile = open("googlePrices.csv", 'rU')  
for row in dataFile:   
    googleData=googleData.append(panda.Dataframe(row))

【讨论】:

请解释如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。

以上是关于在 Python 2.7.3 中将 csv 文件附加到一个空列表中 - 获取一个空列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将多个 .txt 文件转换为 .csv 文件

在 Python 中将 .dbf 批量转换为 .csv

在python脚本中将excel文件更改为csv?

在 Python 中将 .mdb 文件转换为 .csv 时包括列名

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

在 Python 中将多个 CSV 文件合并到电子表格的单独选项卡中