Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Ecetrin 10. 04. 2019, 11:53:48

Název: Python escape sekvence
Přispěvatel: Ecetrin 10. 04. 2019, 11:53:48
Ahoj,

mám v Pythonu raw řetězec v tomto stylu: 
Kód: [Vybrat]
'\\u2551\\033[32m \\u00a9MM, spol. s r. o. \\u00ae \\033[0m'.
Potřeboval bych z každého dvojitého zpětného lomítka odstranit právě jedno, abych získal:
Kód: [Vybrat]
'\u2551\033[32m \u00a9MM, spol. s r. o. \u00ae \033[0m', což představuje koncový řetězec, který skončí ve zdrojáku jednoho embedded zařízení, jenž ho bude dále vypisovat na konzoli.

Zkoušel jsem všechno možné, od prostého replace, po konstrukce typu
Kód: [Vybrat]
my_string.encode('raw_unicode_escape').decode('ascii')
Bohužel, nějak se nemohu dobrat požadovaného výsledku... >:(

Poradil by někdo?
Název: Re:Python escape sekvence
Přispěvatel: jesjim 10. 04. 2019, 12:52:59
codecs.escape_decode() ?
Název: Re:Python escape sekvence
Přispěvatel: Ecetrin 10. 04. 2019, 13:34:52
Děkuji za radu, zkoušel jsem, ale bohužel neúspěšně :(. Někde asi dělám něco špatně...
Název: Re:Python escape sekvence
Přispěvatel: jesjim 10. 04. 2019, 14:36:28
fakt?

Kód: [Vybrat]
my_string = r'\\u2551\\033[32m \\u00a9MM, spol. s r. o. \\u00ae \\033[0m'
print(my_string)

\\u2551\\033[32m \\u00a9MM, spol. s r. o. \\u00ae \\033[0m

print(codecs.escape_decode(my_string)[0].decode())

\u2551\033[32m \u00a9MM, spol. s r. o. \u00ae \033[0m

Název: Re:Python escape sekvence
Přispěvatel: qelurg 10. 04. 2019, 14:40:34
Imho nemáš raw řetězec nebo tě plete repr výstup:
 
Kód: [Vybrat]
>>>
>>> s = r'\\u2551\\033[32m \\u00a9MM, spol. s r. o. \\u00ae \\033[0m'
>>> print(s)
\\u2551\\033[32m \\u00a9MM, spol. s r. o. \\u00ae \\033[0m
>>> print(s.replace('\\\\', '\\'))
\u2551\033[32m \u00a9MM, spol. s r. o. \u00ae \033[0m
Název: Re:Python escape sekvence
Přispěvatel: Ecetrin 11. 04. 2019, 09:13:21
Ahoj,

díky za rady, přiznávám, že jsem vrták nepozorný, řešení s codecs.escape_decode() funguje, chyba byla mezi klávesnicí a monitorem  :D
Název: Re:Python escape sekvence
Přispěvatel: jesjim 11. 04. 2019, 10:19:28
on funguje i replace('\\\\', '\\') na raw stringu podle qelurg