gratis descargar python string escaping

descargar - python 3.6.5 download



VersiĆ³n de Python de las tiras de PHP (5)

Escribí un fragmento de código para convertir las striplashes de PHP en escapes válidos de Python [backslash]:

cleaned = stringwithslashes cleaned = cleaned.replace(''//n'', ''/n'') cleaned = cleaned.replace(''//r'', ''/n'') cleaned = cleaned.replace(''//', '''')

¿Cómo puedo condensarlo?


No estoy totalmente seguro de que esto sea lo que quieres, pero ...

cleaned = stringwithslashes.decode(''string_escape'')


Obviamente puedes concatenar todo junto:

cleaned = stringwithslashes.replace("//n","/n").replace("//r","/n").replace("//","")

¿Es eso lo que estabas buscando? ¿O estabas esperando algo más escueto?


Parece que lo que desea podría manejarse de manera razonablemente eficiente a través de expresiones regulares:

import re def stripslashes(s): r = re.sub(r"//(n|r)", "/n", s) r = re.sub(r"//", "", r) return r cleaned = stripslashes(stringwithslashes)


Python tiene una función de escape () incorporada análoga a los addslashes de PHP, pero no a la función unescape () (stripslashes), que en mi opinión es algo ridículo.

Expresiones regulares al rescate (código no probado):

p = re.compile( ''//(///S)'') p.sub(''/1'',escapedstring)

En teoría, eso toma algo de la forma // (no espacio en blanco) y devuelve / (mismo carácter)

editar: Tras una inspección adicional, las expresiones regulares de Python se rompen como demonios;

>>> escapedstring ''This is a //n//n//n test'' >>> p = re.compile( r''//(/S)'' ) >>> p.sub(r"/1",escapedstring) ''This is a nnn test'' >>> p.sub(r"//1",escapedstring) ''This is a //1//1//1 test'' >>> p.sub(r"///1",escapedstring) ''This is a //n//n//n test'' >>> p.sub(r"/(/1)",escapedstring) ''This is a //(n)//(n)//(n) test''

En conclusión, qué diablos, Python.


use decode(''string_escape'')

cleaned = stringwithslashes.decode(''string_escape'')

Utilizando

string_escape : Produce una cadena que es adecuada como literal de cadena en el código fuente de Python

o concatenar el reemplazo () como la respuesta de Wilson.

cleaned = stringwithslashes.replace("//","").replace("//n","/n").replace("//r","/n")