Boucle Python par l'intermédiaire d'un texte de lecture du fichier de données
Je suis nouveau sur python, et bien que je suis sûr que cela pourrait être une question triviale, j'ai passé ma journée à essayer de résoudre ce de différentes manières. J'ai un fichier contenant des données qui ressemble à ceci:
<string>
<integer>
<N1>
<N2>
data
data
...
<string>
<integer>
<N3>
<N4>
data
data
...
Et qui s'étend à un certain nombre de fois... j'ai besoin de lire les "données" qui, pour la première série (entre la première et la deuxième contient un certain nombre N1 de X points, un nombre N2 de Y points et un nombre N1*N2 Z points. Si j'avais un seul ensemble de données, je sais déjà comment lire toutes les données, puis lire la valeur N1, N2, puis le trancher en X, Y et Z, de redéfinir et de l'utiliser... mais si mon fichier contient plusieurs ensembles de données, comment puis-je lu qu'à partir d'une chaîne de caractères jusqu'à la prochaine, et puis répétez la même opération pour la prochaine série, et encore jusqu'à ce que j'arrive à la fin du fichier?
J'ai essayé de définir une fonction comme:
def dat_fun():
with open("inpfile.txt", "r") as ifile:
for line in ifile:
if isinstance('line', str) or (not line):
break
for line in ifile:
yield line
mais ne fonctionne pas, j'obtiens des tableaux avec des pas de données sur eux. Tous les commentaires seront appréciés.
Merci!
Son un fichier de texte brut. @johnthexiii. Je veux tous les jeux, certains fichiers contiennent deux ensembles, un peu plus. À partir de chaque ensemble de données que j'utilise le X, Y et Z pour créer quelques parcelles, que j'ai réussi à faire, si je créer manuellement des fichiers indépendants avec un seul jeu de "<string> \n <integer>\n <N1>\n <N2> les données ...." par fichier. Je veux être capable de lire un jeu jusqu'à la prochaine <string> est atteint (et l'utilisation de ses données), puis parcourez la prochaine série de données jusqu'à la prochaine <string> est atteint, et ainsi de suite jusqu'à la fin du fichier. Merci!
OriginalL'auteur jealopez | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
Tous lignes sont des instances de
str
, de sorte que vous de sortir sur la première ligne. Supprimer ce test et de test pour une ligne vide en enlevant les espaces premier:Je ne pense pas que vous avez besoin de rompre à une ligne vide, vraiment; la
for
la boucle se termine à la fin du fichier.Si vos lignes contiennent d'autres sortes de données, vous devez faire la conversion vous-même, à venir de chaîne.
OriginalL'auteur Martijn Pieters
Avec des données structurées comme ça, je te suggère juste de lire ce que vous avez besoin. Par exemple:
Vous pouvez le tourner dans un dataset fonction génératrice par l'ajout d'une boucle et donne les valeurs:
mais je pense qu'une fois que je comprends comment les mettre dans des tableaux les données entre des chaînes de caractères, il sera plus facile pour moi de comprendre comment lire les n_one, n_two et ainsi de suite comme des nombres entiers. Merci.
Et oui, la première chaîne (et chaque chaîne) est le nom de l'ensemble de données correspondant.
OriginalL'auteur Rob Watts
Le changer en:
not line
n'est pas possible d'êtreTrue
; tous, mais la dernière ligne aura un retour à la ligne, et même alors, la dernière ligne ne serait pas vide.OriginalL'auteur Rushy Panchal