如何获取文档行数?关于统计每行指定字母出现次数的函数问题
解决方法:无需提前统计行数,直接遍历文件行更高效
嘿,我明白你的需求啦!其实你根本不需要先手动获取文档的行数——Python里的文件对象本身就是可迭代的,你可以直接逐行遍历它,这样代码会更简洁高效。
先给你指出当前代码里的几个小问题:
- 函数内部的代码没有正确缩进,Python对缩进要求很严格哦
- 用
extend()方法是错的,line.count(Letter)返回的是一个整数,应该用append()把这个整数添加到列表里 - 打开文件后最好用
with语句,它会自动帮你关闭文件,避免资源泄漏
下面是修正后的完整代码:
def LetterNumberCount(Letter): letterOccurs = [] # 使用with语句自动管理文件资源 with open('magazine.in', 'r') as document: # 直接遍历文件的每一行,无需提前统计行数 for line in document: # 统计当前行中目标字母的出现次数,添加到列表 count = line.count(Letter) letterOccurs.append(count) # 返回列表中的最大值 return max(letterOccurs)
如果你确实需要单独获取文件的行数(虽然在这个场景里没必要),可以用这个方法:
with open('magazine.in', 'r') as document: line_count = sum(1 for line in document)
不过要注意,统计完行数后,文件的指针会移到末尾,如果你还要继续读文件内容,需要调用document.seek(0)把指针移回开头。但回到你的需求,直接逐行遍历统计是最优的方案~
内容的提问来源于stack exchange,提问作者PotatoLatte
相关产品推荐
相关产品推荐

