Python 如何返回最长行中最短的单词?

Python 如何返回最长行中最短的单词?,python,python-3.x,Python,Python 3.x,因此,我的文件内容在file name testing.txt下,如下所示: testing.txt(文件) 如何创建一个函数来分析给定文件中的每一行,并返回最长文件行中的最短单词。因此,在这种情况下,应该返回单词(are),因为它是整个文件中最长行中最短的单词。谢谢你的帮助!我知道我必须使用for循环来检查文件的每一部分,但我肯定缺少函数中的一些主要部分。我知道如何显示文件中的每一行,但我不知道如何分析文件中的每一行并返回一个特定的行(最短的单词) 到目前为止,我有一个函数,它读取文件并打印文

因此,我的文件内容在file name testing.txt下,如下所示:

testing.txt(文件) 如何创建一个函数来分析给定文件中的每一行,并返回最长文件行中的最短单词。因此,在这种情况下,应该返回单词(are),因为它是整个文件中最长行中最短的单词。谢谢你的帮助!我知道我必须使用for循环来检查文件的每一部分,但我肯定缺少函数中的一些主要部分。我知道如何显示文件中的每一行,但我不知道如何分析文件中的每一行并返回一个特定的行(最短的单词)

到目前为止,我有一个函数,它读取文件并打印文件中最大的一行,但我仍然停留在文件中最短的字上

def main():

    List = []
    infile = open('testing.txt', 'r')
    line1= infile.readline()
    line2= infile.readline()
    line3= infile.readline()
    line4= infile.readline()
    line5= infile.readline()
    
    if line1>line2 and line3 and line4 and line5:
        List.append(line1)
    elif line2>line1 and line3 and line4 and line5:
        List.append(line2)
    elif line3> line1 and line2 and line4 and line5:
        List.append(line3)
    elif line4> line1 and line2 and line3 and line5:
        List.append(line4)
    else: 
        List.append(line5)
    print (List)
main()

使用
max
min
为您的预期输出尝试此操作

def shortest_word_in_longest_line(filename):
    with open(filename) as file:
        longest_line = max(file, key=len)  # file is an iterator over lines
    return min(longest_line.split(), key=len)  # whitespace-separated words
例如:

>>> print(shortest_word_in_longest_line('testing.txt'))
'are'

使用
max
min
为您的预期输出尝试此操作

def shortest_word_in_longest_line(filename):
    with open(filename) as file:
        longest_line = max(file, key=len)  # file is an iterator over lines
    return min(longest_line.split(), key=len)  # whitespace-separated words
例如:

>>> print(shortest_word_in_longest_line('testing.txt'))
'are'

请告诉我们你到目前为止都做了些什么。你被否决了,因为你的帖子等于“为我做”而没有表现出任何努力。将问题分解成更小的块,并找出如何实现每个块。试一试,当您遇到需要帮助的特定问题时,请回来。请投赞成票。请向我们展示您迄今为止所做的尝试。你被否决了,因为你的帖子等于“为我做”而没有表现出任何努力。将问题分解成更小的块,并找出如何实现每个块。试一试,当您遇到需要帮助的特定问题时再回来。请投赞成票。由于打开的文件f已经是一个迭代器,并且max可以处理任何iterable,因此无需使用.readlines()将文件准备到列表中
max(f,key=len)
运行速度更快,占用的空间更少。否则,答案很好。我不知道文件是什么时候成为迭代器的,但我只是检查了一下,它们至少在2.7中是这样的,使用.next而不是,无需使用.readlines()将文件准备到列表中
max(f,key=len)
运行速度更快,占用的空间更少。否则,答案很好。我不知道文件是什么时候成为迭代器的,但我只是检查了一下,它们似乎至少在2.7中是这样的,使用了.next而不是。