Проблемы со строкой декодирования Python

1

Я получаю следующую строку из базы данных:

'23:45 \xe2\x80\x93 23:59'  

и выход должен выглядеть так:

'23:45 - 23:59'  

Как я могу декодировать это? Я пробовал декодировать utf-8, но не повезло

>>> x.decode("utf-8")
u'23:45 \u2013 23:59'

спасибо

Теги:
decoding

3 ответа

7
Лучший ответ

Это совершенно правильно. Интерактивный интерпретатор python отображает строку repr() строки. Если вы хотите увидеть его как правильную строку, print ее:

>>> print '23:45 \xe2\x80\x93 23:59'
23:45 – 23:59
  • 0
    Привет, ThiefMaster, но как мне получить «-» вместо \ u2013? это единственный вариант, чтобы пользователь повторно пакет?
  • 0
    Точно так же: с print u'23:45 \u2013 23:59' вы также получите вывод 23:45 – 23:59 .
Показать ещё 2 комментария
1
a="NOV–DEC 2011" (en-dash)
b=unidecode(a)

#output --> NOV-DEC 2011 (with hyphen)

Сначала вам нужно установить unidecode и импортировать его. Я пробовал, и он работает хорошо. Надеюсь, поможет!

1

Представление UTF-8 "en dash" http://www.fileformat.info/info/unicode/char/2013/index.htm - это hex 0xE2 0x80 0x93 (e28093) или u "\ u2013". Похоже, вы хотите заменить символ en-dash на ascii hyphen/minus (0x2d), чтобы сохранить его в переменной. Это нормально, но переменная не будет содержать тот же символ, который хранится в базе данных, не более, чем если вы заменили Ü (http://www.fileformat.info/info/unicode/char/dc/index.htm) с ascii U или заменить нуль (0x30) на капитал O (0x4f).

  • 0
    См. Также stackoverflow.com/questions/816285/… , последний ответ на который гласит: «Unidecode выглядит как законченное решение. Он преобразует причудливые кавычки в кавычки ascii, латинские символы с ударением в безударные и даже пытается транслитерировать для обработки символов, которые не имеет эквивалентов ASCII. "

Ещё вопросы

Сообщество Overcoder
Наверх
Меню