Maison >développement back-end >Tutoriel Python >Comment puis-je extraire des nombres à virgule flottante d'une chaîne à l'aide d'expressions régulières en Python ?

Comment puis-je extraire des nombres à virgule flottante d'une chaîne à l'aide d'expressions régulières en Python ?

DDD
DDDoriginal
2024-12-03 10:25:10166parcourir

How Can I Extract Floating-Point Numbers from a String Using Regular Expressions in Python?

Extraire des nombres à virgule flottante d'une chaîne à l'aide d'expressions régulières

En programmation, il est souvent nécessaire d'extraire des données de chaînes de texte. Dans ce cas, vous cherchez à extraire des nombres à virgule flottante à partir d'une chaîne telle que « Niveau actuel : 13,4 dB. »

Solution d'expression régulière

Utilisation d'expressions régulières , vous pouvez définir un modèle qui capture les nombres à virgule flottante. Considérons le code Python suivant :

import re

string = "Current Level: 13.4db."
result = re.findall(r"\d+\.\d+", string)
print(result)

Ce code utilise le modèle d'expression régulière d .d :

  • d : correspond à un ou plusieurs chiffres, représentant la partie numérique entière du float.
  • .: Correspond au point décimal.
  • d : Correspond à un ou plusieurs chiffres après le point décimal, représentant la partie fractionnaire du flottant.

La liste de résultats contiendra le nombre à virgule flottante extrait : ['13.4'].

Solution robuste avec validation

Pour une approche plus robuste, utilisez le modèle r"[- ]?(?:d*.*d )". Ce modèle gère à la fois les signes positifs et négatifs, ainsi que les chiffres facultatifs avant le point décimal.

result = re.findall(r"[-+]?(?:\d*\.*\d+)", string)
print(result)

En plus de l'extraction, vous pouvez valider la saisie de l'utilisateur en essayant de la convertir directement en flottant :

user_input = "Current Level: 1e100 db"
for token in user_input.split():
    try:
        float_value = float(token)
        print(f"{float_value} is a float")
    except ValueError:
        print(f"{token} is something else")

Ce code parcourt les jetons de la chaîne d'entrée et tente de les convertir en flottants. Si une conversion réussit, le jeton est un float. Sinon, c'est considéré comme autre chose.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn