Python >> Tutoriel Python >  >> Python

Comment supprimer tout après le dernier caractère d'une chaîne ?

Formulation du problème

  • Chaîne donnée s , et
  • caractère c .

Comment supprimer tous les caractères dans s après la première occurrence de c ?

Exemple

Given:
- string s = 'hello world', and 
- empty space character c = ' '. 

Desired result:
'hello'

Méthode 1 :string.index() + découpage

Pour tout supprimer après la première occurrence du caractère c , déterminer l'indice de c en s avec s.index(c) . Passez ensuite le résultat en tant qu'index d'arrêt dans une opération de découpage, en commençant par le premier caractère, comme dans s[:s.index(c)] . Le résultat est la sous-chaîne jusqu'à la première occurrence du caractère c en s , exclus.

# Method 1: string.index() + slicing
s = 'hello world'
c = ' '

result = s[:s.index(c)]

print(result)
# hello

Méthode 2 :string.split()

La méthode str.split(sep, maxsplit) avec maxsplit défini sur 1 divise la chaîne en deux sous-chaînes dans une liste. Il divise la chaîne à la première occurrence de l'argument séparateur sep . En accédant au premier élément de cette liste, vous obtenez la chaîne avec tout avant la première occurrence du sep caractère.

# Method 2: string.split()
s = 'hello world'
c = ' '

result = s.split(c, 1)[0]

print(result)
# hello

Le string.split(delimiter, maxsplit=1) La méthode crée une liste de chaînes, divisée au niveau de la chaîne de délimitation. Si vous divisez au caractère délimiteur c , le premier élément de la liste fractionnée est la chaîne avant la première occurrence du caractère c . C'est pourquoi l'opération s.split(c, 1)[0] vous donne la chaîne avec tout supprimé après la première occurrence du caractère c .

Méthode 3 :Regex

Le re.findall(pattern, string) méthode de la bibliothèque d'expressions régulières de Python re crée une liste de chaînes qui correspondent au pattern dans le string donné . En utilisant le motif '.*' + c , vous faites correspondre tout jusqu'à la première occurrence du caractère c . Vous prenez le premier élément de la liste retournée avec l'opération d'indexation ...[0] et déterminez tous les caractères sauf le dernier (c'est-à-dire le caractère correspondant c ) en utilisant le découpage ...[:-1] jusqu'à l'avant-dernier élément.

# Method 3: regex
import re
s = 'hello world'
c = ' '

result = re.findall('.*' + c, s)[0][:-1]

print(result)
# hello