Найти - Пользователи
Полная версия: Работа с файлами unicode type
Начало » Python для новичков » Работа с файлами unicode type
1
Dartanyan
У знакомого программист конвертировал кирилические имена в юникод и вот что вышло
#U0441#U0430#U0434 вместо слова сад.

Итерировать и переименовать не проблема, а вот конвертировать из этого чуда уже проблема(.
py.user.next
>>> s = '#U0441#U0430#U0434'
>>> 
>>> out = ''.join(chr(int(i, 16)) for i in s.split('#U') if i)
>>> out
'сад'
>>>
Dartanyan
осталось только решить вопрос с редкими цыфрами в конце строки иначе летит все в пух и прах.
py.user.next
Приведи пример строк, для которых не срабатывает.
Dartanyan
#U0425#U043e#U043b#U043b1 цыфра может быть везде (
Shaman
>>> s = '#U0425#U043e#U043b#U043b1'
>>> ''.join(chr(int(i, 16)) for i in s.split('#U') if i)
'Хол䎱'
>>> 
dimy44
Ну там видимо отсечь надо
 ''. join(chr(int(i[:4], 16)) for i in s . split( '#U' ) if i) 
Dartanyan
Решил так, работает но только в 3 питоне в 2 вылетает (.

str = "#U0425#U043e#U043b#U043b1.jpg"
s = str.split('.')
print(''.join(chr(int(i[0:4], 16))+i[4:] for i in s[0].split('#U') if i)+'.'+s[1])

dimy44 решил также, но сам но вот с беда с 2 питоном
dimy44
Наверно запары с chr, попробуйте
 print(''.join(unichr(int(i[:4], 16)).encode('utf-8')+i[4:] for i in s.split('#U') if i)) 
Dartanyan
dimy44 заработало, все )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB