Comment en boucle jusqu'à la fin d'un fichier en Python sans vérification de ligne vide?
Je suis en train d'écrire une affectation à compter le nombre de voyelles dans un fichier, actuellement dans ma classe, nous avons seulement été en utilisant ce code de vérifier pour la fin d'un fichier:
vowel=0
f=open("filename.txt","r",encoding="utf-8" )
line=f.readline().strip()
while line!="":
for j in range (len(line)):
if line[j].isvowel():
vowel+=1
line=f.readline().strip()
Mais cette fois pour notre mission, le fichier d'entrée donné par notre professeur est un essai, donc il y a plusieurs lignes vides tout au long du texte en paragraphes distincts et autres joyeusetés, sens de mon code actuel ne serait valable que jusqu'à la première ligne vide.
Est-il un moyen de vérifier si un fichier a atteint sa fin autre que vérifier si la ligne est vide? De préférence dans un mode similaire que j'ai mon code en ce moment, où il vérifie pour quelque chose de chaque itération de la boucle while
Merci d'avance
strip()
sur vos lignes, le reste de votre code devrait fonctionner parfaitement. L'appel à readline()
sur une ligne de texte sans texte sera de retour "\n"
, tout à la fin du fichier, elle sera de retour ""
(une chaîne vide). Une autre solution est d'appeler read()
pour obtenir tous les fichiers texte dans un seul long de la chaîne de caractères que vous pouvez parcourir. Vous n'avez pas besoin de compter les voyelles ligne par ligne.OriginalL'auteur ay lmao | 2015-03-12
Vous devez vous connecter pour publier un commentaire.
Ne tourne pas en boucle par le biais d'un fichier de cette façon. Au lieu d'utiliser un
for
boucle.En fait l'ensemble de votre programme est tout simplement:
Cela dit, si vous voulez vraiment garder à l'aide d'un
while
boucle pour quelques égarés raison:Coupant les cheveux en quatre... vous devez ajouter
as f
à lawith
déclaration.hmm, vous avez raison! Je dois vraiment savoir que désinvolte...
Il me faudrait une durée de mon cycle de vie naturel pour obtenir de 17,8 k réputation dans la mais il y a une correction
if line == '':
et pasif line = ''
. Je sais que c'est pas connecté à distance dans le cadre de la discussion, mais se sentait comme pointant vers elle. 🙂 🙂 @AdamSmithmerci! N'a pas d'importance combien de temps vous avez été de codage, vous pouvez toujours faute de frappe 🙂
OriginalL'auteur Adam Smith
Trouver en position de fin de fichier:
Ensuite, vous pouvez:
OriginalL'auteur Punnerud
J'ai découvert en suivant les suggestions ci-dessus que
pour ligne en f:
ne fonctionne pas pour une pandas dataframe (pas que quelqu'un dit qu'il le ferait)
parce que la fin de fichier dans un dataframe est la dernière colonne, pas la dernière ligne.
par exemple, si vous avez une trame de données avec 3 champs (colonnes) et 9 enregistrements (lignes), la boucle s'arrête après le 3ème itération, pas après le 9 itération.
Teresa
OriginalL'auteur Teresa Aysan