Python 如何正确读取csv并将其输入列表?
我正在尝试以以下格式将.csv文件中的一组数据读入数组: [a,b,c,d],[e,f,g,h],…] 运行下面的代码,当我打印带有空格(“”)的条目时,我访问元素的方式不正确,因为它在第一个空格(“”)处停止。 例如,如果Business、Fast Company、Youtube、fastcompany是第10个条目……当我打印以下内容时,我会在单独的行中看到: 生意,快 公司,YouTube,FastCompany 关于如何获得结果的任何建议:[[a,b,c,d],[Business,Fast Company,Youtube,fastcompany],[e,f,g,h],…]Python 如何正确读取csv并将其输入列表?,python,list,csv,Python,List,Csv,我正在尝试以以下格式将.csv文件中的一组数据读入数组: [a,b,c,d],[e,f,g,h],…] 运行下面的代码,当我打印带有空格(“”)的条目时,我访问元素的方式不正确,因为它在第一个空格(“”)处停止。 例如,如果Business、Fast Company、Youtube、fastcompany是第10个条目……当我打印以下内容时,我会在单独的行中看到: 生意,快 公司,YouTube,FastCompany 关于如何获得结果的任何建议:[[a,b,c,d],[Business,Fas
import csv
partners = []
partner_dict = {}
i=9
with open('partners.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
partners.append(row)
print len(partners)
for entry in partners[i]:
print entry
分隔符
参数指定使用哪个字符将文件的每一行分割为单独的值。由于您正在传递“”(一个空格),因此读取器正在拆分空格
如果这确实是一个逗号分隔的文件,请使用“,”作为分隔符(或者只保留分隔符
参数,它将默认为“,”
此外,管道字符是引号字符的一个不寻常的值。您的输入文件包含管道而不是引号,这是真的吗?您提供的示例数据既不包含管道也不包含引号。您的代码存在一些问题:
- 迭代列表的“正确”语法是伙伴中条目的
,而不是伙伴[i]中条目的:
:
- 代码中的
变量似乎未使用,我假设您稍后会使用它,所以我现在将忽略它partners\u dict
- 您正在以二进制方式打开文本文件(使用
而不是open(file\u name,“r”)
open(file\u name,“rb”)
- 处理后的数据仍在上下文管理器中完成(
-block)使用…[as…]:
- 您的输入文本似乎按“
”分隔,但在解析时按“”、“
分隔”
delimeter
参数更改为,“
,但是模块只允许单字符字符串作为分隔符。那么我们该怎么办呢?既然”,“
确实是“真正的”分隔符(与空格相反,它永远不应该位于实际的无引号数据中),这似乎是一个很好的解决方案。但是,现在您的所有值都以“
开头,这可能不是您想要的。那么您要做什么呢?嗯,所有字符串都有一个非常整洁的strip()
方法,默认情况下会删除字符串开头和结尾的所有空白。因此,对于strip()
所有值,让我们使用“列表理解”(对列表中的所有项计算表达式,然后返回一个包含新值的新列表),它应该看起来有点像[i.strip(),表示行中的i]
在将其附加到合作伙伴之前
最后,您的代码应该看起来像这样:
import csv
partners = []
with open('partners.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in spamreader:
partners.append([i.strip() for i in row])
print len(partners)
for entry in partners:
print entry
您已将分隔符指定为“”,希望得到什么?能否显示文件的几行?您需要用您提供的引号字符引用字符串。例如,
| Business,Fast Company,Youtube,fastcompany