Преобразование значений datetime.ctime () в Юникод - PullRequest
2 голосов
/ 19 мая 2010

Я хотел бы преобразовать значения datetime.ctime () в Юникод.

Используя Python 2.6.4, работающий под Windows, я могу установить свой язык на испанский, как показано ниже:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'esp' )

Затем я могу передать% a,% A,% b и% B в ctime (), чтобы получить названия и сокращения дня и месяца.

>>> import datetime
>>> dateValue = datetime.date( 2010, 5, 15 )
>>> dayName = dateValue.strftime( '%A' )
>>> dayName
's\xe1bado'

Как мне преобразовать значение 's \ xe1bado' в Unicode? В частности, какую кодировку я использую?

Я думаю, что мог бы сделать что-то вроде следующего, но я не уверен, что это правильный подход.

>>> codePage = locale.getdefaultlocale()[ 1 ]
>>> dayNameUnicode = unicode( dayName, codePage )
>>> dayNameUnicode
u's\xe1bado'

Malcolm

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Преобразование с unicode() или string.decode(), как в вашем примере, должно работать. Единственная проблема должна заключаться в том, что в вашем примере вы используете кодировку локали по умолчанию, даже если раньше вы устанавливали для локали нечто иное. Если вы используете locale.getlocale()[1] вместо locale.getdefaultlocale()[1], вы должны получить правильные результаты.

2 голосов
/ 19 мая 2010

Это Unicode - когда вы назвали unicode(), он стал Unicode. Вы можете сказать, потому что перед строкой стоит u, когда она отображается с repr(). Попробуйте print вместо этого:

>>> d = u's\xe1bado'
>>> d
u's\xe1bado'
>>> print d
sábado
>>>
0 голосов
/ 19 мая 2010

Это, вероятно, зависит от вашей ОС. Но данные выглядят как latin1.

>>> s.decode('latin1')
u's\xe1bado'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...