2016-07-02 6 views
0

ファイルの文字の頻度を調べるために、Pythonでオンラインクラス用のプログラムを作成しています。私は最後の結果にもスペースを入れています。どうすればそれらを省略できますか?ここに私のコードだ:ファイル内の文字を数えるPythonの基本プログラム

import string 
name = raw_input('Enter a file name: ') 
fhandle = open(name) 
counts = dict() 
for line in fhandle: 
    line = line.strip() 
    line = line.translate(None,string.punctuation) 
    line = line.lower() 
    letters = list(line) 
    for letter in letters: 
     counts[letter]=counts.get(letter,0)+1 
lst = list() 
    for letter,count in counts.items(): 
     lst.append((count,letter)) 
lst.sort(reverse=True) 
for count,letter in lst: 
    print count,letter 
+1

あなたは空白を削除するためにさまざまな方法の良い要約を持って、EOL(行の終わり)、タブなど、ここに: http://stackoverflow.com/questions/8270092/python-remove -all-whitespace-in-a-string – Tom

答えて

4

string.punctuation!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~なし空白文字が含まれています。

次へtranslate()にお電話を変更する必要があります。

line.translate(None,string.punctuation+string.whitespace+string.digits) 

タイプhelp(string)詳細については、Pythonインタプリタに。

+2

警告: 'string.digits'をリストに追加すると、数字も削除されます。 –

0

文字が空白の場合(コード内で何も変更したくない場合)は、最後のforループにif文を1つ追加できます。

for count,letter in lst: 
    if letter != ' ': 
     print count,letter 
0

これを行うためのエレガントな方法は、isalpha()を使用することです。 参照ライン11:

import string 
name = raw_input('Enter a file name: ') 
fhandle = open(name) 
counts = dict() 
for line in fhandle: 
    line = line.strip() 
    line = line.translate(None,string.punctuation) 
    line = line.lower() 
    letters = list(line) 
    for letter in letters: 
     if letter.isalpha() == True: 
      counts[letter]=counts.get(letter,0)+1 
    lst = list() 
    for letter,count in counts.items(): 
     lst.append((count,letter)) 
lst.sort(reverse=True) 
for count,letter in lst: 
    print count,letter 
+0

ユニコードはどうですか? 「Python isalpha()」と「scandics」を参照してください。(0120-338-802) –

+0

OPは、「ファイル内の文字の頻度」を探していましたが、これは正確です追加のコード行を1行追加するだけです。 – Jaxian

+0

ファイルがUnicodeの場合、 'isalpha'は文字を認識できません。また 'if letter.isalpha()== True:'は 'letter.isalpha():'ならば ''になりますが、最初にデコードする必要があるので動作しません。リンクされた質問を参照してください。 –

関連する問題