-3
votes

Extraire des informations à partir d'une donnée de journal des événements

J'essaie d'extraire une information spécifique d'une information à partir d'une donnée de journal d'événement, qui est format de fichier texte. Vous trouverez ci-dessous une exemple de données pour votre référence. L'idée est d'extraire des mesures X et Y à partir de ces données. Échantillon fourni ci-dessous. xxx

sortie attendu xxx


1 commentaires

L'exemple fourni n'est qu'une ligne d'un texte dans un fichier texte. Je dois passer plusieurs milliers de lignes et extraire des valeurs X et Y dans le même fichier texte.


4 Réponses :


1
votes

Vous ne savez pas quelle est la structure de données ici, mais ce code les extraire de cette chaîne spécifique. Je suis sûr que si d'autres cas de cela sont un peu similaires, cela devrait également fonctionner. XXX PRE>

Sorties: P>

[-0.1279636, -0.1279636, -0.1279636, -0.1279636, -0.1279636, -0.1279636] #x_vals
[0.0819952, 0.04919712, 0.01639904, -0.01639904, -0.04919712, -0.0819952] #y_vals


1 commentaires

Probablement une perte de temps pour tenter de répondre à une question comme celle-ci. Une fois que vous avez gagné plus de représentant, vous pouvez voter pour étranger.



1
votes

Juste pour être clair, cette réponse ne concerne que le texte affiché dans la question. OP devra considérer avec précaution sur la façon de généraliser la regex en fonction du type de variations qu'il / elle s'attend à exécuter cette regex sur.

text = """start of text
words on new line
more words on new line"""


1 commentaires

Merci pour la solution, ce travail sur une ligne de texte, qui correspond aux échantillons de données que j'ai fournis. Maintenant, je veux appliquer la même logique sur l'ensemble du fichier texte, que je lis la ligne de ligne par ligne à un tableau vide. J'apprécie si vous avez des suggestions sur la façon d'y aller.



2
votes

S'il s'agit d'une méthode de code durs pour trouver juste X 'et Y's peuvent être facilement réalisés comme suit:

df = pd.DataFrame()

df['x'] = re.findall('x\s+([+-]?[0-9]*[.]?[0-9]+)', text)
df['y'] = re.findall('y\s+([+-]?[0-9]*[.]?[0-9]+)', text)


0 commentaires

1
votes
df = pd.DataFrame(columns=['x','y'], dtype=float)

for text in sample:
   a = re.findall('x\s+(-?\d\.\d+)\s+y\s+(-?\d\.\d+)',text)
   df = df.append(pd.DataFrame(a, columns=['x','y'], dtype=float))

4 commentaires

Merci pour la solution. Je lis la ligne de fichier texte par ligne dans un exemple de fichier tableau = [], je voudrais maintenant exécuter la même logique sur cet ensemble complet. Je reçois une erreur, avez-vous une suggestion de le faire fonctionner?


Je passe le même code sur le tableau d'échantillons. Pour x, y dans re.findall ('x \ s + (-? \ d \. \ d +) \ s + y \ s + (--? \ d \. \ d +)', échantillon): impression (x, y) TypeError: Chaîne attendue ou objet de type octet


Importer Re pour texte dans l'échantillon: pour x, y dans re.findall ('x \ s + (-? \ d \. \ d +) \ s + y \ s + (--? \ d \. \ d +)', texte) : Imprimer (x, y) --------------- Est-ce quelque chose comme ça?


Laissez-nous Continuer cette discussion en chat .