【问题标题】:Encoding negative signs from unicode? python从unicode编码负号? Python
【发布时间】:2014-03-16 20:12:58
【问题描述】:

当我尝试从 unicode 编码 Melt_0 时,使用:

mp = Melt_0.encode('utf-8').strip()

mp 最终成为:

¬ネメ123.37ᅡᅠᅡᄚC; ¬ネメ190.07ᅡᅠᅡᄚF; 149.78ᅡᅠK

我可以通过以下方式轻松解决此问题:

import re
re.sub(r'[^\w.]+', ' ', mp)

我得到:

 123.37 C 190.07 F 149.78 K

唯一的问题是 应该是-,当我将所有非字母数字都去掉时,它会被删除。我怎样才能保留-s?

【问题讨论】:

  • 你为什么还要编码?
  • @IgnacioVazquez-Abrams 此信息来自html。

标签: python unicode


【解决方案1】:

您需要先纠正导致数据损坏的早期步骤,而不是编码:

>>> u'¬ネメ'
u'\uffe2\uff88\uff92'
>>> '\xe2\x88\x92'.decode('utf-8')
u'\u2212'
>>> print u'\u2212'
−
>>> unicodedata.name(u'\u2212')
'MINUS SIGN'

>>> u'ᅡᅠᅡᄚ'
u'\uffc2\uffa0\uffc2\uffb0'
>>> '\xc2\xa0\xc2\xb0'.decode('utf-8')
u'\xa0\xb0'
>>> print u'\xa0\xb0'
 °
>>> unicodedata.name(u'\xb0')
'DEGREE SIGN'

【讨论】:

  • 但是我如何将它与包含这些字符但也包含其他字符的字符串一起使用?
  • 你会首先弄清楚数据是如何被损坏的,然后修复它。
  • 那么如果Melt_0 返回u'\u2212123.37\xa0\xb0C; \u2212190.07\xa0\xb0F; 149.78\xa0K' 那么我该如何更改它以使其返回'-123.37 °C -190.07 °F 149.78 K'
  • 你不能。但你不需要;打印出来。
  • 但我确实需要,因为我需要在文本字段中输入字符串。
猜你喜欢
  • 1970-01-01
  • 2019-12-19
  • 2012-04-10
  • 2012-03-18
  • 1970-01-01
  • 2011-03-14
  • 2013-09-10
  • 2018-01-14
  • 2019-02-01
相关资源
最近更新 更多