Форум сайта python.su
Есть utf=8 строка(“Абза́ц”) нужно преобразовать ее в 1251 кодировку. Как это сделать? Заранее благодарен.
Офлайн
Забыл уточнить, питон 3.2
Офлайн
Офлайн
в 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®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя' >>>
Офлайн
py.user.nextУгу, вот поэтому и хочу в нее перевести(или есть вариант по-лучше избавится от ударения?). А в гугле не смог найти ничего для 3 ветки(может плохо искал или чего-то не понимаю).
в 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®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя' >>>
Офлайн
удаление ударения
для второго
>>> 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' >>>
Отредактировано py.user.next (Авг. 24, 2012 13:32:27)
Офлайн
py.user.nextСпасибо, как оказалось, для 3 есть вариант по-проще:
удаление ударения
для второго>>> 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' >>>
>>> s = 'Абза́ц' >>> b=b'\xcc\x81' >>> s.replace(b.decode(),"") 'Абзац'
Офлайн
>>> 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' >>>
Отредактировано py.user.next (Авг. 24, 2012 13:38:52)
Офлайн