Python символьный декодер - PullRequest
       24

Python символьный декодер

0 голосов
/ 29 апреля 2020

У меня есть набор файлов с неработающими символами. Код ниже работает.

    w1252= "QWERTYUIOPASDFGHJKLZXCVBNM"
    w1251= "qwertyuiopasdfghjklzxcvbnm"

    def str_fix(string_w1252):
        for i in zip(w1252, w1251):
            string_w1252 = string_w1252.replace(i[0],i[1])
        return string_w1252

    print(str_fix("MY STRING")) #my string

Когда я заменяю его как

    w1252="¨ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ"
    w1251= "ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБёйцукенгшщзхъфывапролджэячсмитьбю"

    def str_fix(string_w1252):
        for i in zip(w1252, w1251):
            string_w1252 = string_w1252.replace(i[0],i[1])
        return string_w1252

    print(str_fix("# Ïåðåìåííûå"))

, я получаю
SyntaxError: Non-ASCII character '\xc2' in file replacer.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Когда я добавляю

# -*- coding: windows-1251 -*- Я получаю SyntaxError: 'charmap' codec can't decode byte 0x98 in position 0: character maps to <undefined>

и с

# -*- coding: utf-8 -*- Я получаю #���������������������

Как мне сказать Python читать символы по мере их появления в две строки в редакторе?

1 Ответ

0 голосов
/ 29 апреля 2020

Для ваших python файлов вы должны использовать:

# -*- coding: utf-8 -*-

в заголовке и написать весь код в utf-8, все ваши символы кириллицы c поддерживаются, и вы не пропустите что угодно.


Проверьте это:

>>> 'абырвалг'.decode('UTF-8').encode('windows-1251')
'\xe0\xe1\xfb\xf0\xe2\xe0\xeb\xe3'
...