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

Résolu
BenjaminA2mains Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
BenjaminA2mains Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -

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   Statut Membre Dernière intervention  
 

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