PHP'nin stripslashes Python sürümü

oy
10

Ben geçerli Python [ters eğik çizgi] kaçar içine PHP'nin striplashes dönüştürmek için kod parçası yazdı:

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

Bunu nasıl yoğunlaşmak olabilir?

Oluştur 17/08/2008 saat 00:23
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
0

Belli ki her şeyi bir arada arada kullanabilirsiniz:

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

Eğer peşindeydiler şey bu mu? Yoksa daha kısa ve öz şey için umut vardı?

Cevap 17/08/2008 saat 00:26
kaynak kullanıcı

oy
-4

Python PHP'nin addslashes benzer dahili bir kaçış () işlevi, ama aklımda tür saçma hiçbir çıkış yapılmış () işlevini (stripslashes) sahiptir.

kurtarmaya Düzenli ifadeler (kod test edilmedi):

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

Teoride forma \\ (değil boşluk) ve getiri şey \ (aynı karakter) alır

düzenleme: Daha ayrıntılı incelenmesi üzerine, Python düzenli ifadeler gibi her şey kırılır;

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

Sonuç olarak, ne fark eder, Python.

Cevap 17/08/2008 saat 09:28
kaynak kullanıcı

oy
12

Tamamen emin değil bu istediğini, ancak ..

cleaned = stringwithslashes.decode('string_escape')
Cevap 17/08/2008 saat 11:15
kaynak kullanıcı

oy
2

Bu oldukça verimli bir şekilde normal ifadeler ile çözülebileceğini istediğini gibi geliyor:

import re
def stripslashes(s):
    r = re.sub(r"\\(n|r)", "\n", s)
    r = re.sub(r"\\", "", r)
    return r
cleaned = stripslashes(stringwithslashes)
Cevap 17/08/2008 saat 11:55
kaynak kullanıcı

oy
0

kullanım decode('string_escape')

cleaned = stringwithslashes.decode('string_escape')

kullanma

string_escape : Python kaynak kodunda dize olarak uygun olan bir dize üretin

veya Wilson's cevap gibi () değiştirin bitiştirmek.

cleaned = stringwithslashes.replace("\\","").replace("\\n","\n").replace("\\r","\n")
Cevap 18/02/2014 saat 17:02
kaynak kullanıcı

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