翻译特殊字符½

use*_*003 3 python unicode

我正在阅读包含特殊字符的来源½.我如何将其转换为1/2?该字符是句子的一部分,我仍然需要能够"正常"使用该字符串.我正在阅读网页资源,所以我不确定我是否会一直知道编码?

编辑:我试过看其他答案,但他们不适合我.他们似乎总是从以下事情开始:

s= u'£10"
Run Code Online (Sandbox Code Playgroud)

但我已经收到错误:"没有声明编码".但我知道我正在进行什么编码,或者这不重要吗?我只选一个吗?

Die*_*Epp 5

这真的是两个问题.

#1.解释½: 使用unicodedata模块.您可以询问字符的数值,也可以使用规范规范化对其进行规范化并自行解析.

>>> import unicodedata
>>> unicodedata.numeric(u'½')
0.5
>>> unicodedata.normalize('NFKC', u'½')
'1?2'
Run Code Online (Sandbox Code Playgroud)

#2.编码问题:如果您正在使用终端,请确保Python知道终端编码.如果您正在编写源文件,请确保Python知道文件编码.您不能只"选择"为Python设置的编码,您必须告知Python您的终端/文本编辑器已经使用的编码.

Python允许您使用Vim/Emacs样式注释设置文件的编码.如果您使用Vim,请在文件顶部添加注释:

# coding=UTF-8
Run Code Online (Sandbox Code Playgroud)

或者,如果你使用Emacs:

# -*- coding: UTF-8 -*-
Run Code Online (Sandbox Code Playgroud)

如果你既不使用Vim也不使用Emacs,那么哪一个并不重要.显然,如果你不使用UTF-8,你应该替换你实际使用的编码.(UTF-8是我唯一能推荐的编码.)