python怎么判断是不是空行_如何在不检查空行的情况下在Python中进行while循环直到文件结束?...

I'm writing an assignment to count the number of vowels in a file, currently in my class we have only been using code like this to check for the end of a file:

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()

But this time for our assignment the input file given by our professor is an entire essay, so there are several blank lines throughout the text to separate paragraphs and whatnot, meaning my current code would only count until the first blank line.

Is there any way to check if my file has reached its end other than checking for if the line is blank? Preferably in a similar fashion that I have my code in currently, where it checks for something every single iteration of the while loop

Thanks in advance

解决方案

Don't loop through a file this way. Instead use a for loop.

for line in f:

vowel += sum(ch.isvowel() for ch in line)

In fact your whole program is just:

VOWELS = {'A','E','I','O','U','a','e','i','o','u'}

# I'm assuming this is what isvowel checks, unless you're doing something

# fancy to check if 'y' is a vowel

with open('filename.txt') as f:

vowel = sum(ch in VOWELS for line in f for ch in line.strip())

That said, if you really want to keep using a while loop for some misguided reason:

while True:

line = f.readline().strip()

if line == '':

# either end of file or just a blank line.....

# we'll assume EOF, because we don't have a choice with the while loop!

break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值