Кодек Python 'ascii' не может кодировать символ u '\ xf6' в позиции 10 - PullRequest
0 голосов
/ 01 июля 2019

У меня есть строка «Leicht bewölkt».'Ö' вызывает ошибку

'ascii' codec can't encode character u'\xf6' in position 10: ordinal not in range(128)

Я пытался закодировать ее в utf8 # - * - coding: utf- 8 - * - в начало, если файл, но он не работает.Не могли бы вы помочь мне с этим?Я просто хочу распечатать его в командной строке и отправить в Arduino.

def removeThat(schasch):
    print(schasch)
    schasch = str(schasch).encode('utf8')
    schasch = str(schasch).encode('utf8').replace("ü","ue").replace("ä","ae").replace("ö","oe").replace("ß","sss")
    return schasch

1 Ответ

0 голосов
/ 01 июля 2019

Замените символы перед тем, как кодировать строку в utf8

replacements = {
    'ü': 'ue',
    'ä': 'ae',
    'ö': 'oe',
    'ß': 'ss',
}


def replace_umlauts(text: str) -> str:
    for find, replace in replacements.items():
        text = text.replace(find, replace)
    return text

def encode_text(text: str) -> bytes:
    fixed = replace_umlauts(text)
    return fixed.encode('utf-8')


if __name__ == '__main__':
    text = 'Leicht bewölkt'
    print(replace_umlauts(text))
    print(encode_text(text))

, которая печатает

Leicht bewoelkt
b'Leicht bewoelkt'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...