【问题标题】:Remove unicode characters python [duplicate]删除unicode字符python [重复]
【发布时间】:2016-08-30 22:08:07
【问题描述】:

我正在使用 tweepy 在 python 中拉推文。 它以 unicode 类型提供整个数据。 例如:打印类型(数据)给我<type 'unicode'>

其中包含 unicode 字符。 例如:hello\u2026 im am fine\u2019s

我想删除所有这些 un​​icode 字符。我可以使用任何正则表达式吗? str.replace 不是一个可行的选择,因为 unicode 字符可以是任何值,从笑脸到 unicode 撇号。

【问题讨论】:

  • 所有文本都是 Unicode。你的意思是非ASCII字符吗?
  • 是的非 ascii 字符。它是普通的英文文本,中间夹杂着 \u2026 等。

标签: python python-2.7 unicode unicode-string


【解决方案1】:
In [10]: from unicodedata import normalize

In [11]: out_text = normalize('NFKD', input_text).encode('ascii','ignore')

试试这个。

编辑

其实 normalize 返回 Unicode 字符串 unistr 的范式形式。 form 的有效值为“NFC”、“NFKC”、“NFD”和“NFKD”。如果您想了解更多关于 NFKD 的信息,请访问link

In [12]: u = unichr(40960) + u'abcd' + unichr(1972)
In [13]: u.encode('utf-8')
Out[13]: '\xea\x80\x80abcd\xde\xb4'
In [14]: u
Out[14]: u'\ua000abcd\u07b4'
In [16]: u.encode('ascii', 'ignore')
Out[16]: 'abcd'

从上面的代码你会得到encode('ascii','ignore') 的作用。

参考:https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize

【讨论】:

  • data={ "text":"RT @peddoc63: 看来特朗普的反建制和自筹资金的日子已经结束了。那只用了不到 12 小时\ud83d\ude44 https:\/\ /t.co\/W7zaUK8\u2026" } 以上是一个示例。当我做 out_text = normalize('NFKD', data).encode('ascii','ignore') 它给我错误'ascii'编解码器无法编码位置 119-120 中的字符
  • @ashish1512:你为什么要把整本字典传给normalize()
  • 它不完全是一本字典。当我打印类型(数据)时,它给了我
  • @RahulKP:请解释代码的作用。您没有坚持这里的问题的字母;很高兴您的方法保留没有重音符号等的字母,但 OP 只是要求删除任何非 ASCII 代码点。
  • @ashish1512:从您的评论中不清楚。在这种情况下,您似乎有 未解码的 JSON。在未解码的 JSON 中,\uhhhh 转义序列不是 Unicode 代码点)。首先将您的 JSON 解码为 Python。
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2019-04-16
  • 2013-08-20
  • 2017-02-15
  • 2013-11-25
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多