2009-02-14 8 views
2

Est-ce que quelqu'un sait comment supprimer tous les caractères derrière un caractère spécifique?Supprimer les caractères en Python

comme ceci:

http://google.com/translate_t 

dans

http://google.com 
+0

Ceci ne supprime pas * vraiment * - Python ne peut pas mettre à jour une chaîne. Ceci extrait une sous-chaîne jusqu'à une position donnée. Vous pourriez reformuler votre question. –

Répondre

2
str="http://google.com/translate_t" 
shortened=str[0:str.rfind("/")] 

devrait le faire. str [a: b] retourne une sous-chaîne dans python. Et rfind est utilisé pour trouver l'index d'une séquence de caractères, en commençant à la fin de la chaîne.

+0

La version de distribution de SilentGhost est plus claire, IMO. –

+1

De même, s'il n'y a pas de "/" dans la chaîne, cela renvoie la chaîne initiale raccourcie d'un caractère. – tzot

+0

ah, vous avez raison. Cet extrait était un peu naïf. –

2

Si vous connaissez la position du personnage, vous pouvez utiliser la syntaxe de tranche pour créer une nouvelle chaîne:

In [2]: s1 = "abc123" 
In [3]: s2 = s1[:3] 
In [4]: print s2 
abc 

Pour trouver la position que vous pouvez utiliser les find() ou index() méthodes de cordes. Les méthodes split() et partition() peuvent aussi être utiles. Ces méthodes sont documentées dans Python docs for sequences.

Supprimer une partie d'une chaîne est impossible car les chaînes sont immuables. Si vous souhaitez traiter les URL, vous devez absolument utiliser le urlparse library. Il vous permet de diviser une URL en ses parties. Si vous voulez simplement supprimer une partie du chemin du fichier, vous devrez le faire par vous-même.

6

si vous demandez au sujet d'une chaîne abstraite et non vous pouvez aller avec url:

>>> astring ="http://google.com/translate_t" 
>>> astring.rpartition('/')[0] 
http://google.com 
+0

'string' est un module intégré en Python donc il est mauvais de l'utiliser comme nom de variable. – jfs

+0

@jfs: c'est un module de bibliothèque standard. il peut ou peut ne pas entrer en conflit avec certains noms de variables. – SilentGhost

+0

Notez que la méthode rpartition n'existe que dans Python 2.5+, pour les versions antérieures, vous devez utiliser rsplit ('/', 1). –

5

Pour urls, en utilisant urlparse:

>>> import urlparse 
>>> parts = urlparse.urlsplit('http://google.com/path/to/resource?query=spam#anchor') 
>>> parts 
('http', 'google.com', '/path/to/resource', 'query=spam', 'anchor') 
>>> urlparse.urlunsplit((parts[0], parts[1], '', '', '')) 
'http://google.com' 

Pour les chaînes arbitraires, en utilisant re:

>>> import re 
>>> re.split(r'\b/\b', 'http://google.com/path/to/resource', 1) 
['http://google.com', 'path/to/resource'] 
Questions connexes