Python Unicode处理错误 - 如何简单地删除Unicode

-5 python unicode

在这个网站上有几十个甚至几百个关于使用python进行unicode处理错误的问题.这是我所说的一个例子:

UnicodeDecodeError:'ascii'编解码器无法解码位置2310中的字节0xe2:序数不在范围内(128)

很多问题表明OP只是想让违规内容走开.他们收到的回复统一充满了关于编解码器,字符集以及各种不能解决这个基本问题的各种事情:

"我正在尝试处理一个带有一些unicode的文本文件,我不太关心这些东西是什么,它只是在我试图解决的问题的背景下的噪音."

所以,我有一个包含大量JSON编码推文的文件,我对这些特殊字符根本不感兴趣,我希望它们从行中删除.

fh = open('file-full-of-unicode.txt')
for line in fh:
   print zap_unicode(line)
Run Code Online (Sandbox Code Playgroud)

给定一个名为'line'的变量,我如何简单地打印它减去它可能包含的任何unicode?

在那里,我以几种不同的方式重复了这个问题,所以它不能被误解 - unicode在我想要做的事情的背景下是垃圾,我想把它转换成无害的东西或者完全删除它.这最容易实现的是什么?

Bre*_*arn 11

你可以做到line.decode('ascii', 'ignore').这将解码为ASCII所有内容,忽略任何错误.

但是,如果你这样做,请为疼痛做好准备.Unicode存在是有原因的.丢弃部分数据甚至不知道你扔掉了什么几乎总会导致问题.这就像是说"我不在乎我的汽车发动机内部的一些小玩意儿是否起作用,我只是想驾驶它.只要拿出任何不起作用的东西!" 这一切都很好,直到它爆炸.

  • @NealRauhauser:你认为café和naïve是英文单词吗? (4认同)

Ign*_*ams 8

问题不能"消失",必须修复无法unicode正确处理的代码.没有简单的方法可以做到这一点,但最简单的方法是解码输入上的字节,以确保应用程序在任何地方使用文本.

  • @JeffTratner:那不是"解决"它,只是,好吧......忽略它. (3认同)
  • @NealRauhauser:在尝试"摆脱"它之前,先了解一下unicode*是什么. (3认同)