Python查找文本文件最长单词报ValueError: max() arg is an empty sequence如何解决
问题原因分析
- 核心报错原因:执行
max(words,key=len)时,words是空列表。触发场景包括:data1.txt是完全空白的空文件;文件内只有空格、换行、制表符等空白字符,调用split()后没有拆分出任何有效元素,返回空列表。 - 额外代码问题1:打印单词长度的逻辑有误,当前写的是
print('length is : ',max_len_word),会重复打印单词本身,正确写法应该取长度:print('length is : ', len(max_len_word))。 - 额外代码问题2:打开文件的模式选的是
r+(读写模式),你只有读取需求,用默认只读模式r即可,避免误操作修改源文件。 - 额外代码问题3:函数没有定义return返回值,最后调用
print(find_longest_word('data1.txt')),执行完函数逻辑后会额外打印一个None。
修复后的代码
def find_longest_word(filename): with open(filename,'r') as f: content = f.read() words = content.split() # 提前判断列表是否为空,避免max报错 if not words: return "文件中没有可识别的单词" max_len_word = max(words,key=len) print('maximum length word in file :',max_len_word) print('length is : ', len(max_len_word)) return max_len_word print(find_longest_word('data1.txt'))
内容的提问来源于stack exchange,提问作者pearlwrap
相关产品推荐
相关产品推荐

