【发布时间】:2018-06-08 16:26:39
【问题描述】:
我正在尝试构建一个 python 脚本,该脚本将总结一个 一个大型 csv 文件的列并给我输出。我能够总结 带有以下脚本的列:
port csv with open("o77069894.out","r+",encoding='utf8') as fin:
headerline = fin.readline()
amount = 0
debit = 0
value = 0
for row in csv.reader(fin,delimiter=","):
value = float(row[17]) if value else 0.0
debit+=value
print (debit)
但是当我使用带有“12.4 空格”之类的数字(该字段有空格)的 csv 列对其进行测试时,我遇到了一个错误。所以我尝试在for循环中使用: value =row[17].strip() 但抛出错误:
Traceback(最近一次调用最后一次):文件“sum_csv1_v3_modified.py”, 第 8 行,在 对于 csv.reader(fin,delimiter="|") 中的行:文件“C:\ProgramData\Anaconda3\lib\codecs.py”,第 321 行,在解码中 (结果,消耗)= self._buffer_decode(数据,self.errors,最终)UnicodeDecodeError:'utf-8'编解码器无法解码位置的字节0xbf 3213: 无效的 id 起始字节
我无法显示真实数据,因为它是机密的,但我认为由于代码适用于其他 csv 文件,问题可能是由于空白所致。即使这是一个文件问题,我也想知道如何处理这些字段。 另外我想知道如何编辑我的代码以替换数字中的“,”或“$”。谢谢。
【问题讨论】:
-
minimal reproducible example 会有所帮助。在这种情况下,一些证明您的问题的示例数据是理想的。