pythonのアルファベット順への並び替え諸々について教えて下さい!
1.実現したいこと
##↓以下の英語の文章の単語数をカウントするプログラムを書きたいのですが、書き方がいまいちわかりません。
###【英語の文章】
Keep on asking, and it will be given you;
Keep on seeking, and you will find;
keep on knocking, and it will be opened to you;
for everyone asking receives, and everyone seeking finds,
and to everyone knocking, it will be opened.
##↓以下のように出力するのが理想です。
###【理想の出力】
and 5
asking 2
be 3
everyone 3
find 1
for 1
given 1
it 3
keep 3
knoking 2
on 3
opend 2
receives 1
seeking 2
to 2
will 4
you 3
文字数: 42
#2.やってみたこと
##現状、私が書いてみたコードとその結果は以下のとおりです。
###【書いてみたコード】
シャープ(#) coding=utf-8
text='''
Keep on asking, and it will be given you;
Keep on seeking, and you will find;
keep on knocking, and it will be opened to you;
for everyone asking receives, and everyone seeking finds,
and to everyone knocking, it will be opened.
'''
data = text.replace(";" , " ").replace("," , " ").replace("`" , " ").replace("\n"," ").replace("." , " ")
words = data.split(" ")
counter=0
word_counter = {} #各単語のカウントのための「辞書型」配列
print(words)
for word in words:
if word in word_counter:
word_counter[word] += 1 #辞書にあれば、1を追加
else:
word_counter[word] = 1 #辞書になければ、1を設定
counter +=1 #文字数をカウントする
シャープ(#) 結果を表示
for (key, value) in word_counter.items():
print(key, value)
print("文字数:" , counter)
###【現状の出力結果】
['', 'Keep', 'on', 'asking', '', 'and', 'it', 'will', 'be', 'given', 'you', '', 'Keep', 'on', 'seeking', '', 'and', 'you', 'will', 'find', '', 'keep', 'on', 'knocking', '', 'and', 'it', 'will', 'be', 'opened', 'to', 'you', '', 'for', 'everyone', 'asking', 'receives', '', 'and', 'everyone', 'seeking', 'finds', '', 'and', 'to', 'everyone', 'knocking', '', 'it', 'will', 'be', 'opened', '', '']
12
Keep 2
on 3
asking 2
and 5
it 3
will 4
be 3
given 1
you 3
seeking 2
find 1
keep 1
knocking 2
opened 2
to 2
for 1
everyone 3
receives 1
finds 1
文字数: 54
#3.教えていただきたいこと
###【現状の出力結果で改善したい点】
####①['', 'Keep', 'on', 'asking',~~(中略)~~'opened', '', '']の部分と、その下の行にある12を出力したくない
####②単語をアルファベット順に出力したい(現状はその単語が登場した順番)
####③大文字のKeepと小文字のkeepが混在しているので、すべて小文字のkeepに統一したい
####④文字数が54とずれているので、42となるようにしたい
上記①~④を改善した結果↓の出力結果が得られるのがゴールです。
###【理想の出力】
and 5
asking 2
be 3
everyone 3
find 1
for 1
given 1
it 3
keep 3
knoking 2
on 3
opend 2
receives 1
seeking 2
to 2
will 4
you 3
文字数: 42
書き方がわかる方がいらっしゃいましたらご教示のほどお願いいたします。
長文失礼いたしました
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/04 00:46