Найти - Пользователи
Полная версия: UTF-8 в 1251
Начало » Python для новичков » UTF-8 в 1251
1
an1s1
Есть utf=8 строка(“Абза́ц”) нужно преобразовать ее в 1251 кодировку. Как это сделать? Заранее благодарен.
an1s1
Забыл уточнить, питон 3.2
fata1ex
https://www.google.ru/?q=python+utf8+to+cp1251
py.user.next
в cp1251 нет буквы а с ударением

>>> bytes(range(256)).decode('cp1251', 'replace')
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7fЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ\xa0ЎўЈ¤Ґ¦§Ё©Є«¬\xad®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
>>>
an1s1
py.user.next
в cp1251 нет буквы а с ударением

>>> bytes(range(256)).decode('cp1251', 'replace')
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7fЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ\xa0ЎўЈ¤Ґ¦§Ё©Є«¬\xad®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
>>>
Угу, вот поэтому и хочу в нее перевести(или есть вариант по-лучше избавится от ударения?). А в гугле не смог найти ничего для 3 ветки(может плохо искал или чего-то не понимаю).
py.user.next
удаление ударения

для второго
>>> s = 'Абза́ц'
>>> s
'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xcc\x81\xd1\x86'
>>> s = s.replace('\xcc\x81', '')
>>> s
'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xd1\x86'
>>> print s
Абзац
>>>

для третьего
>>> s = 'Абза́ц'
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xcc\x81\xd1\x86'
>>> s = s.encode('utf-8').replace(b'\xcc\x81', b'').decode('utf-8')
>>> s
'Абзац'
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xd1\x86'
>>>

в третьем можно str.translate() применить для такого результата
простой str.replace() тоже подойдёт, скорее всего
an1s1
py.user.next
удаление ударения

для второго
>>> s = 'Абза́ц'
>>> s
'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xcc\x81\xd1\x86'
>>> s = s.replace('\xcc\x81', '')
>>> s
'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xd1\x86'
>>> print s
Абзац
>>>

для третьего
>>> s = 'Абза́ц'
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xcc\x81\xd1\x86'
>>> s = s.encode('utf-8').replace(b'\xcc\x81', b'').decode('utf-8')
>>> s
'Абзац'
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xd1\x86'
>>>
Спасибо, как оказалось, для 3 есть вариант по-проще:
>>> s = 'Абза́ц'
>>> b=b'\xcc\x81'
>>> s.replace(b.decode(),"")
'Абзац'
py.user.next
>>> s = 'Абза́ц'
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xcc\x81\xd1\x86'
>>> s = s.replace('а́', 'а')
>>> s.encode('utf-8')
b'\xd0\x90\xd0\xb1\xd0\xb7\xd0\xb0\xd1\x86'
>>>
вот такой вариант имел в виду
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