Python έκδοση του stripslashes της PHP

ψήφοι
10

Έγραψα ένα κομμάτι του κώδικα για να μετατρέψει striplashes της PHP σε έγκυρη Python [ανάποδη] αποδράσεις:

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

Πώς μπορώ να συμπυκνωθεί;

Δημοσιεύθηκε 17/08/2008 στις 02:23
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
0

Μπορείτε προφανώς να ενώσετε όλα μαζί:

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

Είναι αυτό που ήταν μετά; Ή ήσουν ελπίδα για κάτι πιο λιτός;

Απαντήθηκε 17/08/2008 στις 02:26
πηγή χρήστη

ψήφοι
-4

Η Python έχει μια λειτουργία ενσωματωμένη διαφυγής () ανάλογη με addslashes της PHP, αλλά καμία λειτουργία unescape () (stripslashes), η οποία στο μυαλό μου είναι το είδος του γελοίο.

Κανονικές εκφράσεις για τη διάσωση (κωδικός δεν δοκιμάστηκε):

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

Στη θεωρία που παίρνει κάτι από τη μορφή \\ (όχι κενά) και επιστρέφει \ (ίδια χαρακτήρες)

edit: Μετά από περαιτέρω επιθεώρηση, οι Python κανονικές εκφράσεις σπάσει όπως όλα κόλαση?

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

Εν κατακλείδι, τι στο διάολο, Python.

Απαντήθηκε 17/08/2008 στις 11:28
πηγή χρήστη

ψήφοι
12

Δεν εντελώς σίγουρος ότι αυτό είναι ό, τι θέλετε, αλλά ..

cleaned = stringwithslashes.decode('string_escape')
Απαντήθηκε 17/08/2008 στις 13:15
πηγή χρήστη

ψήφοι
2

Ακούγεται σαν αυτό που θέλετε θα μπορούσε εύλογα αποτελεσματικά αντιμετωπίζονται με κανονικές εκφράσεις:

import re
def stripslashes(s):
    r = re.sub(r"\\(n|r)", "\n", s)
    r = re.sub(r"\\", "", r)
    return r
cleaned = stripslashes(stringwithslashes)
Απαντήθηκε 17/08/2008 στις 13:55
πηγή χρήστη

ψήφοι
0

χρήση decode('string_escape')

cleaned = stringwithslashes.decode('string_escape')

Χρησιμοποιώντας

string_escape : Δημιουργήστε μια σειρά που είναι κατάλληλο ως λεκτικό string στον πηγαίο κώδικα Python

ή ενώσετε το αντικαταστήσει () όπως Wilson's απάντηση.

cleaned = stringwithslashes.replace("\\","").replace("\\n","\n").replace("\\r","\n")
Απαντήθηκε 18/02/2014 στις 20:02
πηγή χρήστη

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