-1

これを使用しますが、テキストファイルで見つけます。これを行う方法がわかりません。

len(max(words, key=len))

誰も私がこれを達成する方法を知っていますか?

また、長さが 6 または 7 の単語がテキスト ファイルに何回出現するかを調べるにはどうすればよいですか?

4

5 に答える 5

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 に答える
1

あなたがしなければならないのは、予想される入力を特定することです。これは主wordswords.

words安全にlistof である可能性のあるワイルドな推測を行いstrます。入力のデータ構造を特定したので、最終的にこのデータ構造を出力として提供するサンプル ファイルを読み取ってみましょう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 に答える
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 に答える