Maison  >  Article  >  développement back-end  >  Comment tout supprimer avant ou après un caractère spécifié en Python

Comment tout supprimer avant ou après un caractère spécifié en Python

WBOY
WBOYavant
2023-05-01 19:10:042203parcourir

my_str = 'fql!jiyik!com'

separator = '!'

result = my_str.split(separator, 1)[0]
print(result)  # ????️ 'fql'

Nous utilisons la méthode str.split() pour supprimer tout ce qui se trouve après le caractère (dans l'exemple !). La méthode

str.split() divise une chaîne en une liste de sous-chaînes à l'aide de délimiteurs.

Cette méthode prend les 2 paramètres suivants :

  • separator Divise la chaîne en sous-chaînes à chaque fois qu'un séparateur apparaît

  • maxsplit Terminez la division maxsplit au maximum (facultatif)

if Si le délimiteur n'est pas trouvé dans la chaîne, une liste contenant seulement 1 élément est renvoyée.

Nous définissons le paramètre maxsplit sur 1 car nous n'avons besoin de diviser la chaîne qu'une seule fois.

Cet exemple supprime tout après la première occurrence de ce caractère dans la chaîne.

my_str = 'fql!jiyik!com'


separator = '!'
result_1 = my_str.split(separator, 1)[0]
print(result_1)  # ????️ 'fql'

# ????️ ['fql', 'jiyik!com']
print(my_str.split(separator, 1))

Supprimez tout après le caractère, en gardant le délimiteur

Veuillez noter que le délimiteur n'est pas inclus dans la chaîne. Si vous devez l'inclure, utilisez l'opérateur d'addition (+).

my_str = 'fql!jiyik!com'

# ✅ 删除字符后的所有内容,保留分隔符
separator = '!'

result = my_str.split(separator, 1)[0] + separator
print(result)  # ????️ fql!

L'opérateur d'addition + peut être utilisé pour concaténer des chaînes en Python.

Supprimez tout après la dernière occurrence du caractère

Si nous devons tout supprimer après la dernière occurrence du caractère dans la chaîne, utilisez la méthode str.rsplit().

my_str = 'fql!jiyik!com'

separator = '!'

# ✅ 删除字符最后一次出现后的所有内容
result = my_str.rsplit(separator, 1)[0]
print(result)  # ????️ 'fql!jiyik'

rsplit() se comporte comme split() sauf qu'il se divise du côté droit. La méthode

str.rsplit() divise la chaîne à partir de la droite, lorsque maxsplit est défini sur 1, elle ne se divise qu'une seule fois.

Supprimez tout après la dernière occurrence, en gardant le délimiteur

Si nous devons inclure le caractère que vous divisez, utilisez l'opérateur d'addition (+).

my_str = 'fql!jiyik!com'

separator = '!'

result = my_str.rsplit(separator, 1)[0] + separator
print(result)  # ????️ 'fql!jiyik!'

Utilisez str.partition() pour tout supprimer après un caractère

Nous pouvons également utiliser la méthode str.partition() pour tout supprimer après un caractère spécifique dans une chaîne. La méthode

my_str = 'fql!jiyik!com'
separator = '!'

result = my_str.partition(separator)[0]
print(result)  # ????️ 'fql'

result = ''.join(my_str.partition(separator)[0:2])
print(result)  # ????️ 'fql!'

str.partition divise la chaîne à la première occurrence du délimiteur fourni.

Cette méthode renvoie un tuple contenant 3 éléments : la partie avant le délimiteur, la partie après le délimiteur et la partie après le délimiteur.

my_str = 'fql!jiyik!com'
separator = '!'

# ????️ ('fql', '!', 'jiyik!com')
print(my_str.partition(separator))

Si le délimiteur n'est pas trouvé dans la chaîne, cette méthode renvoie un tuple contenant la chaîne, suivi de 2 chaînes vides.

Si nous devons inclure un délimiteur dans le résultat, utilisez la méthode str.join() pour joindre les premier et deuxième éléments de la liste. La méthode

my_str = 'fql!jiyik!com'
separator = '!'

result = ''.join(my_str.partition(separator)[0:2])
print(result)  # ????️ 'fql!'

str.join prend un itérable comme argument et renvoie une chaîne qui est la concaténation des chaînes de l'itérable.

La chaîne sur laquelle cette méthode est appelée est utilisée comme séparateur entre les éléments.

Supprimer tout ce qui précède un caractère dans une chaîne en Python

Pour tout supprimer avant un caractère dans une chaîne :

  • Utilisez la méthode str.find() pour obtenir l'index d'un caractère.

  • Utilisez le découpage de chaîne et définissez l'index de départ sur l'index du caractère.

  • La nouvelle chaîne ne contiendra pas les caractères précédents. La méthode

my_str = 'apple, banana'

result = my_str[my_str.find('b'):]
print(result)  # ????️ banana

str.find renvoie l'index de la première occurrence de la sous-chaîne fournie dans la chaîne.

Nous utilisons le découpage de chaîne pour obtenir une partie de la chaîne d'origine qui commence à partir de l'index du caractère et continue jusqu'à la fin de la chaîne.

Veuillez noter que la méthode str.find() renvoie -1 si la sous-chaîne n'est pas trouvée dans la chaîne.

Gestion du scénario où le caractère n'existe pas

Nous pouvons gérer le cas où la méthode find() renvoie -1 dans l'instruction if/else.

my_str = 'apple, banana'

index = my_str.find('b')
print(index) # ????️ 7

if index != -1:
    result = my_str[index:]
else:
    result = my_str
    # ????️ alternatively raise an error

print(result) # ????️ 'banana'

Ceci est un exemple de cas où le caractère fourni n'est pas dans la chaîne.

my_str = 'apple, banana'

index = my_str.find('z')
print(index)  # ????️ -1

if index != -1:
    result = my_str[index:]
else:
    result = my_str
    # ????️ alternatively raise an error

print(result)  # ????️ 'apple, banana'

Notre instruction else attribue la variable de résultat à la chaîne entière, cependant, une exception peut être levée.

my_str = 'apple, banana'

index = my_str.find('z')
print(index)  # ????️ -1

if index != -1:
    result = my_str[index:]
else:
    # ????️ this runs
    raise IndexError('provided character not in string')

Supprimez tout avant la dernière occurrence du caractère

Si nous devons tout supprimer avant la dernière occurrence du caractère, utilisez la méthode str.rfind(). La méthode

my_str = 'apple,banana,bear'

result = my_str[my_str.rfind('b'):]

print(result) # ????️ 'bear'

str.rfind renvoie l'index le plus élevé de la chaîne dans laquelle la sous-chaîne fournie est trouvée.

Si la chaîne ne contient pas de sous-chaîne, cette méthode renvoie -1.

Nous pouvons utiliser des instructions if/else pour gérer les situations où le caractère n'existe pas dans la chaîne.

my_str = 'apple,banana,bear'

index = my_str.rfind('b')

if index != -1:
    result = my_str[index:]
else:
    result = my_str

print(result)  # ????️ 'bear'

Si le bloc else s'exécute, nous définissons la variable de résultat sur la chaîne entière.

Alternativement, nous pouvons générer l'erreur dans le bloc else, par exemple raise IndexError('your message here').

Nous pouvons également utiliser la méthode str.rsplit() pour tout supprimer avant la dernière occurrence du caractère.

Utilisez rsplit() pour tout supprimer avant la dernière occurrence d'un caractère

Pour tout supprimer avant la dernière occurrence d'un caractère :

  • Divisez la chaîne à partir de la droite en utilisant la méthode str.rsplit().

  • Accédez à l'élément de liste à l'index 1.

  • Le résultat sera une chaîne contenant tout après la dernière occurrence de ce caractère.

my_str = 'example.com/articles/python'

result = my_str.rsplit('/', 1)[1]
print(result)  # ????️ 'python'

# ????️ 如果你想在结果中包含这个字符
result_2 = '/' + my_str.rsplit('/', 1)[1]
print(result_2)  # ????️ '/python'

# ????️ ['example.com/articles', 'python']
print(my_str.rsplit('/', 1))

Nous utilisons la méthode str.rsplit() pour tout supprimer avant que le dernier caractère n'apparaisse. La méthode

str.rsplit renvoie une liste de mots dans une chaîne en utilisant le délimiteur fourni comme chaîne de délimiteur.

my_str = 'one two three'

print(my_str.rsplit(' '))  # ????️ ['one', 'two', 'three']
print(my_str.rsplit(' ', 1))  # ????️ ['one two', 'three']

Cette méthode prend les 2 paramètres suivants :

  • separator divise la chaîne en sous-chaînes à chaque fois qu'un séparateur apparaît

  • maxsplit effectue le fractionnement maxsplit au maximum, celui le plus à droite (facultatif)

rsplit() se comporte comme split() sauf en se séparant du côté droit.

请注意 ,我们为 maxsplit 参数提供了值 1,因为我们只想从右侧拆分字符串一次。

my_str = 'example.com/articles/python'

result = my_str.rsplit('/', 1)[1]
print(result)  # ????️ 'python'

# ????️ ['example.com/articles', 'python']
print(my_str.rsplit('/', 1))

最后一步是访问索引 1 处的列表元素,以获取包含指定字符最后一次出现之后的所有内容的字符串。

如果要在结果中包含该字符,请使用加法 + 运算符。

my_str = 'example.com/articles/python'

result = '/' + my_str.rsplit('/', 1)[1]
print(result)  # ????️ '/python'

使用 rpartition() 删除字符最后一次出现之前的所有内容

或者,我们可以使用 str.rpartition() 方法。

my_str = 'example.com/articles/python'

result = my_str.rpartition('/')[2]
print(result)  # ????️ 'python'

# ????️ ('example.com/articles', '/', 'python')
print(my_str.rpartition('/'))

str.rpartition 方法在提供的分隔符的最后一次出现处拆分字符串。

该方法返回一个包含 3 个元素的元组 - 分隔符之前的部分、分隔符和分隔符之后的部分。

如果在字符串中找不到分隔符,则该方法返回一个包含两个空字符串的元组,后跟字符串本身。

如果需要在结果中包含分隔符,请使用 str.join() 方法连接第二个和第三个列表项。

my_str = 'example.com/articles/python'

result = ''.join(my_str.rpartition('/')[1:])
print(result)  # ????️ '/python'

str.join 方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。

调用该方法的字符串用作元素之间的分隔符。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer