-1

使用它,但在文本文件中找到,我不知道该怎么做。

len(max(words, key=len))

有谁知道我怎么能做到这一点?

另外我如何找出一个 6 或 7 长度的单词出现在文本文件中的次数?

4

5 回答 5

1

您所要做的就是确定预期的输入,我假设主要是words,并考虑如何读取输出预期为words.

我大胆猜测words可能liststr. 现在我们已经确定了输入的数据结构,让我们尝试读取一个示例文件,该文件最终会为您提供这个数据结构作为输出,如words.

假设您有一个包含内容的普通文件,名为sample.txt

a
bc
def

你的阅读代码可能是(非常准系统)”

with open('sample.txt') as f:
    words = f.readlines()

print len(max(words, key=len))

现在请记住,您可能会遇到各种障碍,例如不同的文件格式,从文本文件中清除空行等,欢迎您阅读官方 Python 文档以深入了解。希望这能给你一个好的起点。

于 2013-02-28T15:39:24.507 回答
1

听起来您需要帮助打开和阅读文本文件:

with open('words.txt', 'r') as words_file:
    words = words_file.read().split()
    print len(max(words, key=len))

首先,您阅读文件。然后,您通过分割空格从文本中获取单词列表,其工作原理如下:

>> "This is a test.".split()
['This', 'is', 'a', 'test']

您应该注意,这不处理标点符号(“This is a test.”中最长的单词是“test.”,或 5 个字符),因此如果您需要过滤掉标点符号,那将是一个单独的步骤。

于 2013-02-28T15:47:22.260 回答
0

对于您的后续编辑,

with open('textfile.txt') as f:
  words = f.read().split()
  sizes = list(map(len,words))
  print('Maximum word length: {}'.format(max(sizes)))
  print('6 letter count: {}'.format(sizes.count(6)))
于 2013-02-28T15:27:16.207 回答
0
>>> words = 'I am no hero'
>>> max(words.split(), key=len)
'hero'
于 2013-02-28T15:29:42.040 回答
0
from itertools import chain

with open('somefile') as fin:
    words = (line.split() for line in fin)
    all_words = chain.from_iterable(words)
    print max(all_words, key=len)

它的作用是获取输入文件,构建一个按空格分割行的生成器,然后将该生成器链接到max


鉴于您的编辑,然后:

from itertools import chain
from collections import Counter

with open('somefile') as fin:
    words = (line.split() for line in fin)
    all_words = chain.from_iterable(words)
    word_lengths = Counter(len(word) for word in all_words)

print word_lengths

从那开始工作......

于 2013-02-28T15:45:48.953 回答