我试图将.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],...]?
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
答案 0 :(得分:2)
delimiter
参数指定用于将文件的每一行拆分为单独值的字符。由于你正在传递''(空格),读者会分开空格。
如果这是一个以逗号分隔的文件,请使用','作为分隔符(或者只保留delimiter
参数,它将默认为',')。
此外,管道字符是引号字符的异常值。您的输入文件是否包含管道而不是引号?您提供的示例数据既不包含管道也不包含。
答案 1 :(得分:0)
您的代码存在一些问题:
for entry in partners:
,而不是for entry in partners[i]:
partners_dict
变量似乎未使用,我假设您稍后会使用它,所以我暂时忽略它open(file_name, "r")
代替open(file_name, "rb")
with ... [as ...]:
- 阻止)", "
分隔,但在解析时由" "
分隔如果我理解你的问题,你的问题似乎是由最后一个引起的。 “显而易见的解决方案”可能是将delimeter
参数更改为", "
,但模块只允许使用单字符串作为分隔符。那么我们该怎么办?好吧,因为","
实际上是“真正的”分隔符(它绝不应该在实际的非引用数据中,与空格相反),这似乎是一个很好的解决方案。但是,现在您的所有值都以" "
开头,这可能不是您想要的。所以你会怎么做?好吧,所有字符串都有一个非常简洁的strip()
方法,默认情况下会删除字符串开头和结尾的所有空格。因此,对于strip()
所有值,让我们使用“列表理解”(评估列表中所有项目的表达式,然后返回带有新值的新列表),这看起来有点像[i.strip() for i in row]
在将其附加到partners
之前。
最后,您的代码应该看起来像这样:
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