Je souhaite supprimer les guillemets doubles de:
string = '"" " " ""\\1" " "" ""'
obtenir:
string = '" " " ""\\1" " "" "'
J'ai essayé d'utiliser rstrip
, lstrip
et , strip('[^\"]|[\"$]')
mais cela n'a pas fonctionné.
Comment puis-je faire ceci?
strip
, veuillez noter que a) cette méthode ne prend pas une expression régulière comme argument, b) l'expression régulière que vous avez fournie n'aurait pas fonctionné de toute façon et c) cette méthode supprime tous les caractères adjacents, pas seulement un, donc vous auriez perdu deux guillemets avec.strip('"')
.Réponses:
Si les guillemets que vous souhaitez supprimer sont toujours "en premier et en dernier" comme vous l'avez dit, vous pouvez simplement utiliser:
string = string[1:-1]
la source
Si vous ne pouvez pas supposer que toutes les chaînes que vous traitez ont des guillemets, vous pouvez utiliser quelque chose comme ceci:
Éditer:
Je suis sûr que vous venez d'utiliser
string
comme nom de variable pour exemplification ici et dans votre vrai code, il a un nom utile, mais je me sens obligé de vous avertir qu'il existe un module nomméstring
dans les bibliothèques standard. Il n'est pas chargé automatiquement, mais si jamais vous utilisez,import string
assurez-vous que votre variable ne l'éclipse pas.la source
Pour supprimer le premier et le dernier caractère, et dans chaque cas, effectuez la suppression uniquement si le caractère en question est un guillemet double:
Notez que le modèle RE est différent de celui que vous aviez donné, et que l'opération est
sub
("substitute") avec une chaîne de remplacement vide (strip
est une méthode de chaîne mais fait quelque chose d'assez différent de vos besoins, comme d'autres réponses l'ont indiqué).la source
startsWith
.IMPORTANT: J'étends la question / réponse pour supprimer les guillemets simples ou doubles. Et j'interprète la question comme signifiant que LES DEUX citations doivent être présentes et concordantes pour effectuer la bande. Sinon, la chaîne est renvoyée inchangée.
Pour "déquoter" une représentation sous forme de chaîne, qui peut être entourée de guillemets simples ou doubles (c'est une extension de la réponse de @ tgray):
Explication:
startswith
peut prendre un tuple, pour correspondre à l'une des nombreuses alternatives. La raison pour laquelle les parenthèses DoubleD((
et))
est pour que nous passons un paramètre("'", '"')
àstartswith()
, pour spécifier les préfixes autorisés, au lieu de deux paramètres"'"
et'"'
qui serait interprété comme un préfixe et un (invalide) position de départ.s[-1]
est le dernier caractère de la chaîne.Essai:
=>
(Pour moi, les expressions regex ne sont pas évidentes à lire, donc je n'ai pas essayé d'étendre la réponse de @ Alex.)
la source
len(s) >= 2
, ou quelque chose de similaire.Si la chaîne est toujours comme vous le montrez:
la source
Presque fini. Citant de http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip
[...]
L'argument n'est donc pas une expression rationnelle.
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!
la source
Si vous êtes sûr qu'il y a un "au début et à la fin, que vous souhaitez supprimer, faites simplement:
ou
la source
Supprime une chaîne déterminée du début et de la fin d'une chaîne.
la source
J'ai du code qui doit supprimer les guillemets simples ou doubles, et je ne peux pas simplement ast.literal_eval.
Ceci est similaire à la réponse de ToolmakerSteve, mais cela autorise des chaînes de longueur 0 et ne transforme pas le caractère unique
"
en une chaîne vide.la source
dans votre exemple, vous pouvez utiliser une bande mais vous devez fournir l'espace
notez que le \ 'dans la sortie est les guillemets python standard pour la sortie de chaîne
la valeur de votre variable est '\\ 1'
la source
La fonction ci-dessous supprimera les spces vides et renverra les chaînes sans guillemets. S'il n'y a pas de guillemets, il retournera la même chaîne (supprimée)
la source
À partir de
Python 3.9
, vous pouvez utiliserremoveprefix
etremovesuffix
:la source
trouver la position du premier et du dernier "dans votre chaîne
la source