LINUX.ORG.RU

python обработка строк


0

0

задача есть строка в win1251, но в ней в есть вкрапления в виде
(строка utf-8 ), т.е. строки в юникоде в окружение '(' ')', как бы эту строку
перекодировать в нормальный вид? А то уже час по хелпу лазию, а просветлению все не приходит.

anonymous

>>> s="cp1251 (utf-8) cp1251 (utf-8) cp1251"
>>> m="&marker&"
>>> ls=s.replace("(",m).replace(")",m).split(m)
>>> print ls
['cp1251 ', 'utf-8', ' cp1251 ', 'utf-8', ' cp1251']
# По четным индексам - cp1251, по нечетным - utf-8
>>> for i in range(len(ls)):
	if (i & 1):
		ls[i]="("+ls[i].decode('utf-8').encode('cp1251')+")"
>>> ss="".join(ls)
>>> print ss

kosmonavt
()
Ответ на: комментарий от kosmonavt

ЗЫ

На тот случай, если в исходной строке вдруг встретиться "&marker&", то m можно присвоить "нецензурное" значение, например m="\0"

kosmonavt
()

спасибо

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.