如何在保留指数值的同时隐含包含扩展ascii的字符串以表示升为幂的数字?例如,如果字符串为“ m \ xb3 / h”,该字符串旨在表示每小时的立方米,我想返回字符串“ m3 / h”。或'm \ xb2'应该返回'm2'。

代码 -

varUnit = 'm\xb3/h'
varUnit.decode('ascii', 'ignore').endcode('ascii')
print varUnit


返回“ m / h”,而需要“ m3 / h”。

最佳答案

好吧,首先要知道的是,没有一个“扩展ascii”。 Ascii已通过许多不同方式进行了扩展。快速测试表明您需要“ latin_1”或“ cp1252”。因此,首先,将其转换为unicode(一种完全存储任何字符的方式):

varUnit = varUnit.decode("latin_1")


编辑:如果只想在自己的应用程序中显示它,则应在此处停止并使用Unicode。 print varUnit应该给您。但是在这种情况下,旧版系统可能无法处理:

然后,您需要将其简化为可以用纯ASCII表示的字符。最简单的方法是使用unidecode模块(可以使用pip或easy_install进行安装):

from unidecode import unidecode
print unidecode(varUnit)

10-07 16:27