1

同様の質問を見たことがありますが、本当に役に立ったものはありません。テキスト ファイルを読み込んで分割し、単語の長さをカウントする必要があります。また、左側に単語の長さ、右側に実際の単語の長さを示す表にそれらを印刷しようとしています。私のコードは、私が助けを求めることにしたところまで来たので、今はすべて台無しになっています。

a = open('owlcreek.txt').read().split()
lengths = dict()
for word in a:
    length = len(word)

if length not in lengths:
    for length, counter in lengths.items():
        print "Words of length %d: %d" % (length, counter)

#words=[line for line in a]
#print ("\n" .join(counts))

また、すべてを取得するには、小さなパーサーを作成する必要があると思い"!--ます。The Counterを使ってみたのですが、使い方がよくわからないみたいです。

4

2 に答える 2

3

次のようになります。

a=open('owlcreek.txt').read().split()
lengths=dict()
for word in a:
    length = len(word)
    # if the key is not present, add it
    if not lengths.has_key(length):
        # the value should be the list of words
        lengths[length] = []
    # append the word to the list for length key
    lengths[length].append(word)

# print them out as length, count(words of that length)
for length, wrds in lengths.items():
    print "Words of length %d: %d" % (length, len(wrds))

お役に立てれば!

于 2013-07-08T01:19:19.583 に答える
0

句読点とスペースを削除するには、単純な正規表現で十分です。

編集:私があなたの問題を正しく理解している場合は、テキスト ファイル内のすべての一意の単語を長さで並べ替える必要があります。その場合:

import re
import itertools

with open('README.txt', 'r') as file:
    words = set(re.findall(r"\w+'\w+|\w+", file.read())) # discard duplicates
    sorted_words = sorted(words, key=len)

for length, words in itertools.groupby(sorted_words, len):
    words = list(words)
    print("Words of length {0}: {1}".format(length, len(words)))
    for word in words:
        print(word)
于 2013-07-08T01:35:45.607 に答える