如何隐藏包含扩展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'则需要。
答案 0 :(得分:2)
嗯,首先要知道的是没有人“扩展ascii”。 Ascii已经以多种不同的方式进行了扩展。快速测试表明您需要“latin_1”或“cp1252”。因此,首先,将其转换为unicode(一种存储任何字符的方式):
varUnit = varUnit.decode("latin_1")
编辑:如果您只想在自己的应用程序中显示它,则应停在此处并使用Unicode。 print varUnit
应该给你m³
。但遗留系统可能无法处理它,在这种情况下:
然后,您需要将其简化为可以用纯ASCII表示的字符。最简单的方法是使用unidecode
模块(您可以使用pip或easy_install安装它):
from unidecode import unidecode
print unidecode(varUnit)
答案 1 :(得分:1)
上标数字具有兼容性分解,因此您可以这样做:
>>> import unicodedata
>>> unicodedata.normalize('NFKC', 'm²')
'm2'