Problème d'encodage (je ne suis pas vraiment sur moi-même)

Résolu/Fermé
BenjaminA2mains Messages postés 43 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 5 février 2023 - Modifié le 5 févr. 2023 à 12:49
BenjaminA2mains Messages postés 43 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 5 février 2023 - 5 févr. 2023 à 13:06

Bonjour à tous.

Comme et pour toujours, j'ai un problème.

J'ai un script python qui travaille avec du texte.

Ce texte peut avoir ces formes :

  • こ\Nれ\N以\N上\N何\Nを\N失\Nえ\Nば
  • Bonjour,\Ncomment ça va ?

Je dois réussir à virer les "\N" et les remplacer par des sauts de ligne "\n", pour cela, j'utilise "re" avec replace et un encodage utf-8 pour les caractères spéciaux :

text = 'こ\Nれ\N以\N上\N何\Nを\N失\Nえ\Nば'.encode("utf-8")
text = text.replace('\\N', '\n')

Mais voilà le problème, python semble confondre les \N avec des \n, du coup j'ai une erreur de décodage dite "unicodeescape".

Je n'ai aucune idée de comment régler le problème. Si quelqu'un a une solution, je suis preneur.

Voici le rapport d'erreur :

Traceback (most recent call last):
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
    start(fakepyfile,mainpyfile)
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
    exec(open(mainpyfile).read(),  __main__.__dict__)
  File "<string>", line 1
    text = 'こ\Nれ\N以\N上\N何\Nを\N失\Nえ\Nば'.encode("utf-8")
                                      ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 10-11: malformed \N character escape
A voir également:

1 réponse

BenjaminA2mains Messages postés 43 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 5 février 2023
5 févr. 2023 à 13:06

C'est bon j'ai trouvé une solution.

Je lis la ligne en "raw", je remplace de façon binaire les "\N" et je decode ensuite :

Je sais pas pourquoi je n'y ai pas pensé plutôt mdrr

En tout cas si un moment quelqu'un à le même problème par la suite, cette technique fonctionne très bien.

text = r'こ\Nれ\N以\N上\N何\Nを\N失\Nえ\Nば'.encode("utf-8")
text = text.replace(b'\N', b'\n').decode()
0