xSkyFoXx
@xSkyFoXx

Split и русские строки в Python 2.X

Вот такой короткий пример:
# -*- coding: utf-8 -*-
my_str = u'Строка ^ с ^ разделителями!'
print my_str.replace(' ', '')
print my_str.replace(' ', '').split('^')


Дает вот такой ужасный результат:
Строка^с^разделителями!
[u'\u0421\u0442\u0440\u043e\u043a\u0430 ', u' \u0441 ', u' \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438!']


Подскажите, пожалуйста, как это побороть? Как после split'а вернуться к нормальным строкам?

P.S.
Кодировка файла-скрипта — utf8
  • Вопрос задан
  • 4380 просмотров
Решения вопроса 1
@MikhailEdoshin
То есть это нормальные строки — напечатайте, скажем, первую print my_str.replace(' ', '').split('^')[0] и увидите.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ForeverYoung
@ForeverYoung
Потому что печать списка печатает repr() от его элементов.
см. Container’s __str__ uses contained objects’ __repr__

Можно например печатать так:
for item in lst: print item


Еще немного инфы здесь: см. с фразы Since this question involves a lot of confusing unicode stuff, I thought I'd offer an analysis of what was going on here.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы