2016-09-25 11 views
0

txtファイルからアルファベットの文字の頻度を数えたいと思います。大文字と小文字は区別されないので、「b」または「B」の場合は問題になりません。アルファベット=「ABC ... XYZ」 、その後、手紙の周波数のために各行をチェックします。 各行の文字の頻度を数える方法

は、私はデフcount_lettersでアルファベットリスト() などを設定することは可能だと思いました。

私はこのコードを持っている:私が理解できるものから、

from tkinter import * 
import tkinter.messagebox 
from tkinter.filedialog import askopenfilename 
import string 

def show_result(): 
    analyze_file(filename.get()) 

def analyze_file(filename): 
    try: 
     infile = open(filename, "r") 
     # ... create a list counts ... 
     # ... for each line call count_letters ... 
     infile.close() 

    # show histogram 
    histogram(counts) 
    except IOError: 
    tkinter.messagebox.showwarning("Analyze File", 
           "File " + filename + " does not exist") 

    # count each letter in the string 
def count_letters(line, counts): 
    #code... 
    pass 

def open_file(): 
    filenameforReading = askopenfilename() 
    filename.set(filenameforReading) 
... 
+3

は、ヘルプページを読むためにいくつかの時間がかかるしてください生成されます(のhttp:// stackoverflowの.com/help/on-topic)と[[どのような種類の質問を避けるべきですか?]](http://stackoverflow.com/help/dont-ask)を参照してください。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 – idjaw

+6

あなたはいくつかの質問をしましたが、まだ1つの答えを受け入れていないので、[ツアー]を読むこともできます。 – usr2564301

+0

ok申し訳ありませんが、私はもう質問しません – mrobertini1239

答えて

3

collections.Counterはあなたが後にしているものです。 lineを想定し

from collections import Counter 

def count_letters(line): 
    return Counter(line.lower()) 

がこのケースを下げ、すべての文字のカウントを辞書のようなオブジェクトを返すために、すべての文字を変換する、文字列です。 例:

count_letters('Bananas are berries!') 

特に名前のセクションでは、[ "どのようなトピック私はおよそここに求めることができますか?"]、

Counter({ 
    'a': 4, 
    'e': 3, 
    'r': 3, 
    ' ': 2, 
    'b': 2, 
    'n': 2, 
    's': 2, 
    'i': 1, 
    '!': 1 
}) 
関連する問題