【发布时间】:2015-04-07 23:42:49
【问题描述】:
所以我有一个 9000 行的 xml 数据库,保存为 txt,我想在 python 中加载它,所以我可以做一些格式化并删除不必要的标签(我只需要一些标签,但有很多不必要的信息)以使其可读。但是,我收到了UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 608814: character maps to <undefined>,我认为这意味着程序遇到了非 Unicode 字符。我很肯定这些字符对程序并不重要(我要查找的数据都是纯文本,没有特殊符号),所以当我无法阅读时,如何从 txt 文件中删除所有这些字符没有得到UnicodeDecodeError的文件?
【问题讨论】:
-
您如何尝试加载/阅读它?你知道它的编码是什么吗?另外,您使用的是什么版本的 Python?
-
我将需要的 XML 数据库部分粘贴到 txt 中,然后使用 .read().splitlines() 获取列表,然后可以使用我编写的函数对其进行格式化逐行进行。
-
复制和粘贴可能会弄乱字符编码,具体取决于您使用的工具。我将发布一个答案,说明如何跳过此异常,但这只会掩盖更大的问题。或者,如果您使用错误的编码打开文件,则会不必要地破坏信息。我想这有多重要取决于您的情况。
-
我不知道数据库编码成什么。这是一个大型的短信数据库,彩信和表情符号已经被剥离。我正在使用 python 3.4.2。至于工具,我在 sublime text 2 中打开了 XML,复制了所有,除了开头附近的一些标签不包含我需要的文本。不过我对 XML 文件了解不多,所以我不知道如何解决这些问题,或者找出它的编码方式。
标签: python python-3.x unicode