python Comment puis-je supprimer les guillemets doubles et doubles



Answers

Si vous ne pouvez pas supposer que toutes les chaînes que vous traitez ont des guillemets doubles, vous pouvez utiliser quelque chose comme ceci:

if string.startswith('"') and string.endswith('"'):
    string = string[1:-1]

Modifier:

Je suis sûr que vous venez d'utiliser string comme nom de variable pour l'exemplification ici et dans votre code réel, il a un nom utile, mais je me sens obligé de vous avertir qu'il y a un module nommé string dans les bibliothèques standard. Il n'est pas chargé automatiquement, mais si vous utilisez une import string assurez-vous que votre variable ne l'éclipse pas.

Question

Je veux enlever les guillemets de

string = '"" " " ""\\1" " "" ""'

devenir

string = '" " " ""\\1" " "" "'

J'ai essayé d'utiliser rstrip , lstrip et strip('[^\"]|[\"$]') mais cela n'a pas fonctionné.

Comment puis-je faire ceci? Merci de m'aider.




trouver la position du premier et du dernier "dans votre chaîne

>>> s = '"" " " ""\\1" " "" ""'
>>> l = s.find('"')
>>> r = s.rfind('"')

>>> s[l+1:r]
'" " " ""\\1" " "" "'



La fonction ci-dessous déshabille les espaces vides et renvoie les chaînes sans guillemets. S'il n'y a pas de guillemets alors il retournera la même chaîne (dépouillé)

def removeQuote(str):
str = str.strip()
if re.search("^[\'\"].*[\'\"]$",str):
    str = str[1:-1]
    print("Removed Quotes",str)
else:
    print("Same String",str)
return str



Presque fini. Citant de http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip

L'argument chars est une chaîne spécifiant l'ensemble des caractères à supprimer.

[...]

L'argument chars n'est pas un préfixe ou un suffixe; plutôt, toutes les combinaisons de ses valeurs sont supprimées:

Donc l'argument n'est pas une expression rationnelle.

>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>> 

Notez que ce n'est pas exactement ce que vous avez demandé, car il mange plusieurs guillemets des deux extrémités de la chaîne!




IMPORTANT: J'étends la question / réponse pour supprimer les guillemets simples ou doubles. Et j'interprète la question pour signifier que les deux citations doivent être présentes, et correspondant, pour effectuer la bande. Sinon, la chaîne est renvoyée inchangée.

Pour "désquoter" une représentation sous forme de chaîne, celle-ci peut être entourée de guillemets simples ou doubles (ceci est une extension de la réponse de @ tgray):

def dequote(s):
    """
    If a string has single or double quotes around it, remove them.
    Make sure the pair of quotes match.
    If a matching pair of quotes is not found, return the string unchanged.
    """
    if (s[0] == s[-1]) and s.startswith(("'", '"')):
        return s[1:-1]
    return s

Explication:

startswith peut prendre un tuple, pour correspondre à plusieurs alternatives. La raison pour les parenthèses DOUBLED (( et )) est que nous passons UN paramètre ("'", '"') à startswith() , pour spécifier les préfixes autorisés, plutôt que DEUX paramètres "'" et '"' , qui serait interprété comme un préfixe et une position de départ (invalide).

s[-1] est le dernier caractère de la chaîne.

Essai:

print( dequote("\"he\"l'lo\"") )
print( dequote("'he\"l'lo'") )
print( dequote("he\"l'lo") )
print( dequote("'he\"l'lo\"") )

=>

he"l'lo
he"l'lo
he"l'lo
'he"l'lo"

(Pour moi, les expressions regex ne sont pas évidentes à lire, donc je n'ai pas essayé d'étendre la réponse de @ Alex.)




dans votre exemple, vous pouvez utiliser la bande, mais vous devez fournir l'espace

string = '"" " " ""\\1" " "" ""'
string.strip('" ')  # output '\\1'

notez le \ 'dans la sortie est les citations python standard pour la sortie de la chaîne

la valeur de votre variable est '\\ 1'




Links