如何解决:使用.csv Dictreader的Python导入文件失败时出现未定义字符

B队

首先,我发现以下内容与我的问题基本相同,但是已关闭,并且我不确定我了解关闭原因与帖子内容的关系。我也没有真正找到有效的答案。

我有来自4个应用程序的20多个输入文件。所有文件都将导出为.csv文件。前19个文件有效(从同一应用程序导出的其他4个文件),然后我遇到了一个文件,该错误提示我:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 5762: character maps to <undefined>

如果我朝右看,那是&lt ctrl&gt。下面的代码是相关的行:

with open(file, newline = '') as f: 
    reader = csv.DictReader(f, dialect = 'excel')
    for line in reader:

我知道我将要获取文件。我知道它将是.csv。由于手动生成/导出源文件,我得到的内容可能会有一些差异。在某些文件中(例如日语,俄语等),可能还会出现一些奇怪的字符。我之所以提供此信息,是因为回到源头以获取不同的文件可能只会使罐子拉开,直到我不得不提取更新的数据(或更糟糕的是,其他人这样做了)。

因此问题可能是多部分的:
1)是否有一种方法可以告诉csv.DictReader忽略未定义的字符?(有关编解码器的提示:如果看不到,对我来说毫无价值。)

2)如果我确实有“疯狂的”字符,该怎么办?我曾考虑过将每个输入作为二进制文件打开,过滤掉令人讨厌的十六进制字符,将文件写回到磁盘上,然后打开新文件,但这似乎给程序带来了很多开销,而对我来说则更多。这也是1977年以来的一些JCL声明。

3)如果我在阅读时输入崩溃,如何弄清输入的内容。

4)我选择了“方言='excel'”;因为许多输入是可以从源应用程序之一下载的Excel文件。从dictreader上的文档中,我的印象是,这仅定义了期望/使用的定界符,引号字符和EOL字符。因此,我不认为这是我的问题,但是我也是Python新手,所以我不确定100%。

B队

我在上面的评论中发布了解决的方法;这是将的errors参数设置open()'ignore'

with open(file, newline = '', errors='ignore') as f: 

这正是我在上面原始帖子中的第一个问题中正在寻找的内容(即,是否有一种方法可以让csv.DictReader忽略未定义的字符)。

更新:后来我确实需要使用一些Unicode字符,并且不能忽略它们。基于Excel产生的unicode .csv文件的该解决方案的正确答案是使用“ utf_8_sig”编解码器。这将删除Windows在文件顶部写入的字节顺序标记(utf-16 BOM),以使其知道其中包含unicode字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我使用熊猫加载CSV文件时如何解决keyerror

在空白的csv文件中使用opencsv将csv转换为bean时如何解决运行时异常

使用Pandas DataFrame将python字典导出到.csv文件时,如何解决(我认为是)编码问题?

写入CSV时如何解决“短写入”错误

如何解决Logstash中CSV文件的解析错误

如何解决:从vscode Webview扩展导入包时出现“未定义导出”和“未定义需求”错误

使用验证时如何解决错误?

如何解决使用ViewChild ElementRef时无法读取angular中未定义的属性'nativeElement'

使用“ --experimental-modules”进行编译时,如何解决“ ReferenceError:未定义require”错误?

与使用名称空间的外部库链接时,如何解决C中的未定义引用?

使用uclibc时如何解决对fenv.h中函数的未定义引用?

使用nuxtJS + Vue2-Editor时如何解决文档未定义错误?

在Vue中使用VeeValidate时如何解决“ TypeError:插件未定义”错误

如何解决“模块未定义”。

导入类时如何解决“未捕获的ReferenceError:XXX未定义”

从.csv文件中解析的字符串是kml文件中的无效标记。我该如何解决?

使用xargs时如何解决此类文件或目录

使用apt时如何解决“文件末尾的多余垃圾”?

在python中使用熊猫时如何解决“属性错误”

在Python中读取包含未定义字符的csv文件

Python代码未将读数存储在.csv文件中。收到“预期序列”错误。任何想法如何解决这个问题?

如何解决使用绝对路径导入?

使用@CompileStatic命名的参数编译失败-如何解决?

使用Filezilla之后如何解决字符编码问题?

测试使用Mockito模拟时如何解决NullpointerException?

使用Spring框架的WebSocketClient时如何解决NoClassDefFoundError

使用Boilerpipe时如何解决ConnectException错误?

在Java中使用递归时如何解决StackOverflowError?

使用Postman时如何解决nodejs中的CORS错误?

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档