2009-10-09 7 views

Répondre

6

Je suis curieux de savoir pourquoi vous utilisez une expression régulière pour ce simple remplacement de chaîne. Le seul avantage que je peux s ee est que vous pouvez le faire dans une ligne de code au lieu de deux, mais je pense personnellement qu'une méthode de remplacement est plus claire qu'une regex pour quelque chose comme ça.

L'objet de chaîne a une méthode replace - str.replace(old, new[, count]), donc à utiliser replace("-", "") et replace("\"", "").

Notez que ma syntaxe est peut-être un peu éteinte - je suis toujours un débutant python.

+0

Probablement parce que c'était la réponse acceptée à sa question précédente: http://stackoverflow.com/questions/1545655/how-do-i-replace-all-punctuation-in-my-string-with-in-python/1545678 # 1545678 –

+0

ou peut-être parce qu'il a besoin de remplacer plusieurs caractères – SilentGhost

+0

@Thomas: ce serait très lent – SilentGhost

1

re.sub('[-"]', '', s)

0

En Python 2.6:

print 'Hey -- How are "you"?'.translate(None, '-"') 

Retours:

Hey How are you? 
2

En Python 2.6/2.7, vous pouvez utiliser la méthode translate() utile sur les chaînes. Lorsque vous utilisez None comme premier argument, cette méthode a le comportement spécial de supprimer toutes les occurrences de n'importe quel caractère dans le deuxième argument.

>>> s = 'No- dashes or "quotes"' 
>>> s.translate(None, '"-') 
'No dashes or quotes' 

commentaire Per SilentGhost, cela devient être assez rapidement la lourdeur dans les deux < 2.6 et> = 3.0, parce que vous devez créer explicitement une table de traduction. Cet effort n'en vaudrait la peine que si vous effectuez une telle opération.

+0

ne fonctionne que dans py2.6, dans py3k c'est plus encombrant que ça – SilentGhost

Questions connexes