删除扩展的Ascii并保留文本

时间:2011-01-17 15:55:47

标签: python string ascii

如何隐藏包含扩展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'则需要。

2 个答案:

答案 0 :(得分:2)

嗯,首先要知道的是没有人“扩展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)

答案 1 :(得分:1)

上标数字具有兼容性分解,因此您可以这样做:

>>> import unicodedata
>>> unicodedata.normalize('NFKC', 'm²')
'm2'