Удаление Extended Ascii с сохранением текста - PullRequest
1 голос
/ 17 января 2011

Как можно скрыть строку, содержащую расширенный 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 ]

2 голосов
/ 31 января 2011

Ну, первое, что нужно знать, это то, что нет ни одного "расширенного 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 голос
/ 31 января 2011

Надстрочные цифры имеют декомпозиции совместимости, поэтому вы можете сделать:

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