Maison >développement back-end >Tutoriel Python >Extraction de numéros de chaîne Python : Regex vs isdigit() - Quelle méthode est la meilleure ?
Lorsque vous traitez des données texte contenant à la fois du texte et des nombres, cela peut être nécessaire pour extraire les valeurs numériques de la chaîne. Deux méthodes courantes pour effectuer cette tâche en Python sont les expressions régulières et la méthode isdigit().
Les expressions régulières (regex) offrent un moyen puissant de faire correspondre des modèles dans une chaîne. Pour extraire des nombres, vous pouvez utiliser le modèle d, qui correspond à un ou plusieurs chiffres. Prenons l'exemple :
import re line = "hello 12 hi 89" numbers = re.findall(r'\d+', line) print(numbers) # Output: [12, 89]
Cette expression régulière correspond aux séquences de chiffres "12" et "89" et les renvoie sous forme de liste. Pour faire correspondre uniquement les nombres délimités par des limites de mots (telles que des espaces, des points ou des virgules), vous pouvez utiliser le modèle b :
numbers = re.findall(r'\b\d+\b', line) print(numbers) # Output: [12, 89]
L'approche isdigit () fournit une autre manière d’extraire des nombres d’une chaîne. Cette méthode renvoie True pour les caractères qui sont des chiffres et False dans le cas contraire. Pour l'utiliser, vous pouvez parcourir la chaîne et vérifier chaque caractère :
line = "hello 12 hi 89" numbers = [] for char in line: if char.isdigit(): numbers.append(int(char)) print(numbers) # Output: [12, 89]
Dans cet exemple, la méthode parcourt chaque caractère de la chaîne, vérifie s'il s'agit d'un chiffre à l'aide de isdigit() et l'ajoute à la liste des nombres si c'est le cas.
En général, l'utilisation d'expressions régulières est plus efficace pour extraire des nombres d'un chaîne plutôt que d’utiliser la méthode isdigit(). Les expressions régulières peuvent rapidement correspondre à des modèles complexes, tandis que isdigit() nécessite une itération sur la chaîne entière.
Si vous devez également extraire des entiers négatifs, l'approche regex fournit un solution plus simple. Utilisez simplement r'-d' pour faire correspondre les chiffres négatifs. Cependant, utiliser isdigit() nécessiterait une logique plus complexe pour gérer les signes négatifs.
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!