J'ai un texte similaire à ce format p>
"poids", "156,5", "hauteur", "6.3", "max", "146" p>
"poids", "136,3", "hauteur", "5,1", "max", "205" ........ p>
Mon objectif est d'extraire ces chiffres dans des groupes de sorte que le poids dans la première colonne, la hauteur de la deuxième colonne, max dans la troisième etc. p>
Jusqu'à présent, j'ai réussi à obtenir le numéro de poids en utilisant ceci: p>
poids = re.findall (r '^ \ d * (\ d +. \ d +)', texte, ré.ignorecase | ré.multiline) p>
est-il possible d'analyser un numéro après un mot spécifique? p>
J'ai trouvé des questions similaires mais je leur ai essayé et ne travaille pas et ne peut penser à rien d'autre maintenant. P>
3 Réponses :
Pensez à utiliser le paquet Pandas, pandas.read_csv () en particulier. Rend la vie facile. P>
Peut-être un moyen simple de le faire est de faire des itérations sur chaque élément de la liste et d'utiliser: Vous obtiendrez chaque numéro dans la ligne. Mais, vous pouvez peut-être utiliser une bibliothèque pour analyser votre dossier. Votre vie sera plus facile p> p>
Tout d'abord, je n'aime pas vraiment comment l'entrée est donnée. Scott est correct dans ses commentaires en ce que cela devrait être analysé d'une manière différente. Mais en train de mettre de côté, nous pouvons essayer de résoudre le problème comme cela: vous voulez probablement utiliser une apparence positive dans Regex. Dans votre situation, nous pouvons l'utiliser pour correspondre à une certaine partie de texte étant donné qu'un certain mot s'est produit juste avant. Vous pouvez inclure une apparence positive avec (? <= Texthere) suivi de votre chaîne de regex d'origine.
Si nous voulons trouver toutes les valeurs de poids: p> explication de la chaîne de recherche: p> (? <= \ "Poids \ ",) code> est une veille positive et recherchera " poids ", code> (y compris les guillemets) p> * \" * (\ d +. \ d +) code> trouvera entre 0 et des espaces illimités suivis d'un devis (la citation d'ouverture à votre numéro), puis correspond au nombre réel du groupe 1. P> P>
merci beaucoup pour votre contribution que j'ai accidentellement essayé de re.findall (Weight \ d * (\ d + \ \ d +), texte 'et a fonctionné bien. Je suis d'accord que la façon dont les données sont données sont gâchées mais que était le point de la tâche que j'ai reçu.
Cela ressemble à un fichier CSV; Vous serez peut-être préférable de commencer par l'analyser comme un.
Ce n'est pas au format CVS, c'est ce que j'essaie de faire en réalité. Il a de multiples valeurs comme celle d'une rangée d'Excel et j'essaie simplement de créer un fichier CVS où le premier collumn serait le poids de la deuxième hauteur et ainsi de suite.
Il est certain que a l'air i> comme un fichier CSV, bien que peut-être pas avec les colonnes disposées comme vous le souhaitez. Mais je l'analyais toujours comme un; Il sera plus facile d'extraire les données que vous souhaitez et d'organiser la façon dont vous voulez.