【问题标题】:<class ‘decimal.ConversionSyntax’> errors when importing data from a CSV file using Python (tried using CSV and Pandas)使用 Python 从 CSV 文件导入数据时出现 <class ‘decimal.ConversionSyntax’> 错误(尝试使用 CSV 和 Pandas)
【发布时间】:2020-08-14 01:57:25
【问题描述】:

我有一个来自一家小型企业的 CSV 文件,该文件代表了他们在大约 30 年内分布的大约 70,000 个订单的记录。我的目标是将此数据存储在模型设置中带有 DecimalField 的 Django 项目中以接收导入。

在尝试将数据存储在 Django 中之前,我首先尝试将这些数据导入 Python。虽然大多数记录导入正常,但在导入期间大约有 1000 条记录抛出 错误。这导致我将不正确的数据输入 Python。我需要修复它读取数据的方式或修复数据本身的问题。

  1. 我已尝试使用 python csv 库和 pandas 来打开文件。
  2. 我在文本编辑器 (SublimeText) 中查看了 csv 文件,但未发现数据存储方式有任何异常。
  3. 我已尝试使用 Microsoft Excel 将数据转换为 UTF-8
  4. 我尝试将 Excel 中的数据复制到 SublimeText,然后从 SublimeText 复制回 Excel 中的新行(预先没有数据的原始行)。

这些都没有解决问题。

我怎样才能找出这些数据有什么问题并解决这个错误?

【问题讨论】:

  • 澄清一下,你能在 Excel 中打开 CSV 文件吗?您是否尝试过使用“chardet”库来确定文件的编码?你能找出导致问题的线路吗?
  • chardet 的结果:{'encoding': 'UTF-8-SIG', 'confidence': 1.0, 'language': ''} 我可以毫无问题地在 excel 中打开文件。我不确定哪些行引发了异常。我会尝试做一些更好的错误处理来查明这一点。

标签: python django pandas csv


【解决方案1】:

您可以使用chardet 来检测编码。

import chardet
with open('csv_of_text.csv','rb') as fraw: # "rb" = bytes mode
    file_content = fraw.read()
chardet.detect(file_content)

【讨论】:

  • {'encoding': 'UTF-8-SIG', 'confidence': 1.0, 'language': ''}
  • 太棒了!使用 Python 打开文件时是否使用“UTF-8-SIG”?如果您发布用于打开文件的 Python 代码,那将有所帮助。
  • 感谢您的帮助。我将数据移至 Microsoft Access 并移回 CSV 文件。这似乎解决了编码问题。
猜你喜欢
  • 2019-04-28
  • 2020-07-20
  • 1970-01-01
  • 2021-08-30
  • 2019-07-28
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多