2013-10-14 3 views
0

Si j'ai une chaîne comme: 'Je ne peux pas analyser ceci' entre guillemets, comment puis-je supprimer cela sans erreur de syntaxe, et retourner ICANTPARSETHIS? Je sais que cela fonctionnerait si c'était «je ne peux pas analyser ceci», mais je regarde un problème où l'entrée potentielle pourrait ne pas avoir de doubles guillemets l'entourant.Analyser des chaînes avec des guillemets simples en Python

+0

Le guillemet est uniquement une erreur de syntaxe dans les littéraux de chaîne, et peut être géré par une citation correcte ou en utilisant une chaîne entre guillemets. –

+1

Mais il semble que vous essayez de gérer l'entrée de programme à la place, auquel cas ce n'est * pas un problème *. Que * exactement * essayez-vous de faire ici? –

+0

Si vous utilisez 'input()' dans Python 2, utilisez 'raw_input()' à la place et évitez de traiter votre entrée comme une expression Python. –

Répondre

4

Vous avez mal compris quelque chose ici. Il n'y a aucun problème ici.

Les erreurs de syntaxe s'appliquent uniquement au code source. Les valeurs de chaîne sont et non le code source.

Si votre code source utilise la chaîne littéraux, Python et produit ceux parse une chaîne valeur. La chaîne littérale peut avoir une erreur de syntaxe, mais si elle ne contient pas d'erreur, elle produira une valeur de chaîne qui est juste une valeur.

Dans l'interpréteur Python, ces valeurs de chaîne sont représentées en utilisant le même format qu'un littéral de chaîne, pour faciliter le débogage et la copie dans l'interpréteur. Rassurez-vous que l'interpréteur Python sait comment échapper les guillemets dans ces valeurs correctement:

>>> """Text with a single quote: '""" 
"Text with a single quote: '""" 
>>> """We can use a double quote too: ". See?""" 
'We can use a double quote too: ". See?' 
>>> """Even mixing " and ' is not a problem.""" 
'Even mixing " and \' is not a problem.' 

je syntaxe littérale triple cité là, mais Python alternatives echos qui utilisent le style minimum citant nécessaire, et échappe à des symboles de citation au besoin .

2
print "Parse 'this string' to something".split() 
print re.findall(some_pattern,"this is a string with `internal quotation` marks") 
print 'quotes' == "quotes" == """quotes""" == '''quotes''' == u'quotes' == u"quotes" 

Je ne suis pas sûr de ce que votre question est ... mais ces deux exemples démontrent que vous pouvez analyser des chaînes avec des guillemets internes

démontre également que les guillemets sont tous les mêmes essentiellement

1

Donc, mon la compréhension est que vous voulez supprimer l'apostrophe sur le "ne peut pas"?

'I can't parse this'.replace("'", "") 
>>> 'I cant parse this' 

ou si vous avez dans une variable:

s = 'I can\'t parse this' 
s.replace("'", "") 
>>> 'I cant parse this' 

Edit: Comme l'a souligné le deuxième exemple était une erreur de syntaxe sans caractère d'échappement sur l'apostrophe.

+1

Votre deuxième exemple est une erreur de syntaxe –

+0

J'avais oublié le caractère d'échappement, mais qui met essentiellement le str à un guillemet double guillemet avec la citation unique encore là – actionseth

+0

** Exactement **, ce qui illustre que l'OP ne comprenait pas ce qui se passe ici.Avez-vous? –

Questions connexes