【发布时间】:2015-04-27 18:22:08
【问题描述】:
我需要在 Python 上读取一个 csv,而我拥有的文本文件具有以下结构:
"114555","CM13","0004","0","C/U"@"99172","CM13","0001","0","C/U"@"178672","CM13","0001","0","C/U"
分隔符:,
换行符:@
到目前为止我的代码:
import csv
data = []
with open('stock.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', lineterminator='@')
for row in reader:
data.append({'MATERIAL': row[0],'CENTRO': row[1], 'ALMACEN': row[2], 'STOCK_VALORIZADO' : row[3], 'STOCK_UMB':row[4]})
print(data) #this print just one row
此代码只打印一行,因为它不能将 @ 识别为换行符, 并用引号打印出来:
[{'MATERIAL': '114555', 'CENTRO': 'CM13', 'ALMACEN': '0004', 'STOCK_VALORIZADO': '0', 'STOCK_UMB': 'C/U@"99172"'}]
【问题讨论】:
-
quoting=csv.QUOTE_NONE"指示阅读器不对引号字符进行特殊处理。"如果您想要不带引号,请不要使用csv.QUOTE_NONE。 -
我刚试过,但结果还是一样。引号可能有问题吗?
-
lineterminator不起作用。文档说“阅读器被硬编码为将 '\r' 或 '\n' 识别为行尾,并忽略换行符。这种行为将来可能会改变。”这意味着您需要在csv.reader获取数据之前修复您的数据。 -
这是 Python 2 还是 3?
-
出于好奇,到底谁在写 CSV 时以 '@' 作为 lineterminator?