将 csv 文件导入列表列表 [重复]
Posted
技术标签:
【中文标题】将 csv 文件导入列表列表 [重复]【英文标题】:Import a csv file to a list of lists [duplicate] 【发布时间】:2018-12-15 05:50:08 【问题描述】:我使用 csv 模块中的 writerow
函数创建了 this csv 文件。该文件有 63 行。我想从此文件中创建一个 python 列表列表。
我尝试了以下代码:
import csv
dataset = []
def importCsv(file):
x = 0
print(dataset)
with open(file, newline='') as csvfile:
data = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in data:
#print(type(row))
dataset.append(row)
x += 1
print(x)
importCsv(csvPath)
但是当我尝试print(len(dataset))
时,它输出的是 126 而不是 63。我真的很困惑。为什么数据集中的项目数这么多?
【问题讨论】:
CSV文件内容的例子应该很有用 尝试在for
循环中打印 row
以查看添加到 dataset
的内容
126 = 63*2。确保您的文件没有虚假的 CR(回车)字符(臭名昭著的 windows CSV 写入错误),它在每一行之后都会产生一个空行。
if open(file, "w",newline='')
(newline it is): 如果省略了换行符,则windows会出现bug:每行后有多余的空行
问题出在输入文件上。使用十六进制编辑器检查并确保行尾不是\r\r\n
而不是\n
或\r\n
。
【参考方案1】:
问题主要是由于虚假的 CarriageReturn \r
字符,导致出现一些空行。您可以通过添加显式检查来跳过空行
for row in data:
if row:
dataset.append(row)
x += 1
【讨论】:
row
不是字符串,而是列表。问题出在输入文件中。
@Jean-FrançoisFabre。你是对的......我已经更新了答案以上是关于将 csv 文件导入列表列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
错误 #1054 - 尝试将 CSV 文件导入数据库时,字段列表中出现未知列