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")