Python-versjonen av PHP er stripslashes

stemmer
10

Jeg skrev et stykke kode for å konvertere PHP er striplashes inn gyldige Python [skråstrek] rømming:

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

Hvordan kan jeg kondensere det?

Publisert på 17/08/2008 klokken 01:23
kilden bruker
På andre språk...                            


5 svar

stemmer
12

Ikke helt sikker på at dette er hva du vil, men ..

cleaned = stringwithslashes.decode('string_escape')
Svarte 17/08/2008 kl. 12:15
kilden bruker

stemmer
2

Det høres ut som det du vil kunne være rimelig effektivt håndtert gjennom vanlige uttrykk:

import re
def stripslashes(s):
    r = re.sub(r"\\(n|r)", "\n", s)
    r = re.sub(r"\\", "", r)
    return r
cleaned = stripslashes(stringwithslashes)
Svarte 17/08/2008 kl. 12:55
kilden bruker

stemmer
0

bruk decode('string_escape')

cleaned = stringwithslashes.decode('string_escape')

Ved hjelp av

string_escape : Lag en streng som er egnet som strenglitteral i Python kildekoden

eller sette sammen den erstatter () som Wilson's svar.

cleaned = stringwithslashes.replace("\\","").replace("\\n","\n").replace("\\r","\n")
Svarte 18/02/2014 kl. 19:02
kilden bruker

stemmer
0

Du kan selvsagt sette sammen alt sammen:

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

Er det det du var ute etter? Eller ble du håper på noe mer avvisende?

Svarte 17/08/2008 kl. 01:26
kilden bruker

stemmer
-4

Python har en innebygd escape () -funksjonen analog til PHP er addslashes, men ingen unescape () -funksjonen (stripslashes), som i mitt sinn er litt latterlig.

Regulære uttrykk til unnsetning (kode ikke testet):

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

I teorien som tar noe av skjemaet \\ (ikke mellomrom) og returnerer \ (samme char)

Edit: Ved nærmere ettersyn, er Python regulære uttrykk ødelagt som alle helvete;

>>> 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'

I konklusjonen, hva faen, Python.

Svarte 17/08/2008 kl. 10:28
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more