将Unicode中的负号编码?python

0 投票
1 回答
531 浏览
提问于 2025-04-17 22:34

当我尝试从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

唯一的问题是, 本来应该是 -,但是在我把所有非字母数字的字符去掉时,它被删除了。我该如何保留 - 呢?

1 个回答

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'

撰写回答