これを使用しますが、テキストファイルで見つけます。これを行う方法がわかりません。
len(max(words, key=len))
誰も私がこれを達成する方法を知っていますか?
また、長さが 6 または 7 の単語がテキスト ファイルに何回出現するかを調べるにはどうすればよいですか?
これを使用しますが、テキストファイルで見つけます。これを行う方法がわかりません。
len(max(words, key=len))
誰も私がこれを達成する方法を知っていますか?
また、長さが 6 または 7 の単語がテキスト ファイルに何回出現するかを調べるにはどうすればよいですか?
テキストファイルを開いて読むのに助けが必要なようです:
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 文字になります)。そのため、句読点を除外する必要がある場合は、別の手順になります。
あなたがしなければならないのは、予想される入力を特定することです。これは主words
にwords
.
words
安全にlist
of である可能性のあるワイルドな推測を行いstr
ます。入力のデータ構造を特定したので、最終的にこのデータ構造を出力として提供するサンプル ファイルを読み取ってみましょうwords
。
次の名前のコンテンツを含むプレーンファイルがあるとしますsample.txt
。
a
bc
def
それを読み取るためのコードは (非常にベアボーン) である可能性があります」
with open('sample.txt') as f:
words = f.readlines()
print len(max(words, key=len))
ここで、さまざまなファイル形式、テキスト ファイルからの空の行の消去など、さまざまな障害に遭遇する可能性があることを覚えておいてください。さらに深く掘り下げるために、公式の Python ドキュメントを読むことを歓迎します。これが良い出発点になることを願っています。
フォローアップ編集するには、
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)))
>>> words = 'I am no hero'
>>> max(words.split(), key=len)
'hero'
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
そしてそこから作業...