Question

Python débutant ici. J'utilise la bibliothèque Matplotlib pour créer des graphiques à partir de fichiers texte délimités par l'onglet. Je veux que mon script soit flexible, afin qu'il puisse prendre différents types de fichiers de données et les transformer en graphiques. Le problème clé que j'ai est que différents fichiers texte ont différents nombres de lignes d'en-tête avant le début des données. Je voudrais avoir un moyen pour Python de comprendre le nombre de lignes de l'en-tête, puis de les retirer.

Je pense que cela pourrait être fait de deux manières:

1) Comptez le nombre le plus fréquemment qui se déroule de colonnes / éléments par ligne dans le fichier, car la plupart des lignes seront des colonnes contenant les données d'intérêt. Ensuite, avec une boucle pour une boucle, supprimez toutes les lignes qui ne contiennent pas ce nombre de colonnes.

2) Comptez le nombre de colonnes / éléments dans la dernière ligne de fichier, puis supprimez toutes les lignes ne correspondant pas à cette longueur. Comme dans tous les fichiers que j'utilise, la dernière ligne est également les données, cela fonctionnerait également.

Si quelqu'un peut me montrer un court moyen de le faire dans Python pour s'intégrer dans mon script, cela aiderait vraiment beaucoup.

Merci beaucoup,

Rubal

Était-ce utile?

La solution

1)

# lines = lines parsed out of file
line_store = {}
for line in lines:
    tokens = line.split('\t')
    if len(tokens) in line_store:
        line_store[len(tokens)].append(line)
    else:
        line_store[len(tokens)] = [line]
most = []
for line_group in line_store.values():
    if len(line_group) > len(most):
        most = line_group

most finira par être la liste que vous voulez

2)

# lines = lines parsed out of file
tokens_in_last_line = len(lines[-1].split('\t'))
lines_with_correct_number_of_tokens = []
for line in lines[:-2]:
    if len(line.split('\t')) == tokens_in_last_line
        lines_with_correct_number_of_tokens.append(line)
lines_with_correct_number_of_tokens.append(lines[-1])

`Lines_With_Correct_Number_Of_Tokens 'aura toutes vos lignes avec le même nombre de jetons que la dernière ligne du fichier.

Cependant, ces deux solutions ont des défauts majeurs. (1) vous étouffera si vous avez un en-tête avec le même nombre de jetons que les lignes de contenu, ou si les lignes d'en-tête sont plus nombreuses que les lignes de contenu. (2) vous étoufferont si vous avez une ligne de pied de page, ou si la dernière ligne est vide, ou, encore une fois, si vos lignes d'en-tête ont le même nombre de jetons que vos lignes de contenu. Je pense que vous devriez voir si vous pourriez trouver une solution plus élégante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top