gpt4 book ai didi

python - 如何使用换行符@在python上读取csv

转载 作者:太空狗 更新时间:2023-10-30 02:03:40 24 4
gpt4 key购买 nike

我需要在 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"'}]

最佳答案

根据 https://docs.python.org/2/library/csv.html :“阅读器被硬编码为将‘\r’或‘\n’识别为行尾,并忽略行终止符。这种行为将来可能会改变。”因此现在,提供参数 lineterminator='@' 将不起作用。

我认为最好的选择是将整个文件读入一个变量,并替换所有“@”字符,您可以按如下方式执行此操作:

with open("stock.csv", "r") as myfile:
data = myfile.read().replace('@', '\n')

现在您需要调整您的算法,以便您可以将变量 data 传递给 csv.reader(而不是文件 stock.csv),根据到 python 文档:

""可迭代"参数可以是任何返回一行的对象每次迭代的输入,例如文件对象或列表。 [...]

因此您可以将 data.splitlines() 传递给 csv.reader。

关于python - 如何使用换行符@在python上读取csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com