Python 3.6.1:forループの後にコードが実行されない

K.Cl

私はPythonを学んでいて、テキスト内の文字数を数え、それらの相対頻度を計算するスクリプトを書きたいと思っていました。しかし、最初に、ファイルの長さを知りたいと思いました。私の意図は、スクリプトがすべての文字を数えて行から行へと移動する間、現在の行と合計行数を出力するので、どれだけの時間がかかるかを知ることができるということです。

単純なforループを実行して行数をカウントし、次に別のforループを実行して文字をカウントして辞書に入れました。ただし、最初のforループを使用してスクリプトを実行すると、スクリプトは早期に停止します。私の知る限り、2番目のforループには入りません。このループを削除すると、残りのコードは正常に処理されます。これは何が原因ですか?

コードを失礼します。初歩的ですが、私はそれを誇りに思っています。

私のコード:

import string

fname = input ('Enter a file name: ')

try:
    fhand = open(fname)

except:
    print ('Cannot open file.')
    quit()

#Problematic bit. If this part is present, the script ends abruptly.
#filelength = 0
#for lines in fhand:
#    filelength = filelength + 1

counts = dict()
currentline = 1
for line in fhand:
    if len(line) == 0: continue
    line = line.translate(str.maketrans('','',string.punctuation))
    line = line.translate(str.maketrans('','',string.digits))
    line = line.translate(str.maketrans('','',string.whitespace))
    line = line.translate(str.maketrans('','',""" '"’‘“” """))
    line = line.lower()
    index = 0
    while index < len(line):
        if line[index] not in counts:
            counts[line[index]] = 1
        else:
            counts[line[index]] += 1
        index += 1
    print('Currently at line: ', currentline, 'of', filelength)
    currentline += 1

listtosort = list()
totalcount = 0

for (char, number) in list(counts.items()):
    listtosort.append((number,char))
    totalcount = totalcount + number

listtosort.sort(reverse=True)
for (number, char) in listtosort:
    frequency = number/totalcount*100
    print ('Character: %s, count: %d, Frequency: %g' % (char, number, frequency))
ヒルシー

あなたのやり方は問題ないように見えますが、問題をシミュレートするために、Guttenbergの教科書をダウンロードして保存しました。これはUnicodeの問題です。それを解決する2つの方法。バイナリファイルとして開くか、エンコーディングを追加します。テキストなので、utf-8オプションを使用します。

また、別の方法でコーディングすることをお勧めします。以下は、ファイルを開いた後にファイルを閉じる基本構造です。

filename = "GutenbergBook.txt"
try:
    #fhand = open(filename, 'rb')
    #open read only and utf-8 encoding
    fhand = open(filename, 'r', encoding = 'utf-8')
except IOError:
    print("couldn't find the file")
else:
    try:
        for line in fhand:
            #put your code here
            print(line)
    except:
        print("Error reading the file")
finally:
    fhand.close()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

次の単純なPython3 strptime()コードがOSXで実行されるのに、Linuxでは実行されないのはなぜですか?

分類Dev

Python3 PlaysoundTkinterコードが期待どおりに実行されていない

分類Dev

print()関数は、Python3でforループが終了した後にのみ実行されます

分類Dev

Pythonでwhileループが正しく実行されていない-1回の実行後に終了する

分類Dev

Updating choice = (choice % 6) + 1 from python 2 to python 3

分類Dev

Python3:関数とwhileループを使用してリストの項目を変更します。コードが正しく実行されないのはなぜですか?

分類Dev

スレッド内のforループはPython3で1回実行されます

分類Dev

最終的に実行されていない後のPythonコード

分類Dev

Windowsサービスとして実行されているPython:OSError:[WinError 6]ハンドルが無効です

分類Dev

Pythonコードが完全に実行されないのはなぜですか

分類Dev

Python、Gtk3:他のものが実行されている間にプログレスバーをパルス化する方法

分類Dev

なぜPython3はコメントアウトされたコードを実行したのですか?

分類Dev

奇数のネストされたループが適切に壊れない(Python 3.x)

分類Dev

Python SQLite3、テーブルに更新が表示されない

分類Dev

3 秒以内にコードが実行されない場合にのみブロックを実行する

分類Dev

execを使用したPython3動的インポート-「as」が実行されないのはなぜですか?

分類Dev

Python:(1)入力のループ-(2)詳細なテキスト-(3)コードの続行

分類Dev

Python SQLite3:行を繰り返しフェッチしたいが、コードが1行おきにプルしている

分類Dev

Javascript / ES6で、PythonコードがJupyter Notebookで実行を終了するのを待つにはどうすればよいですか?

分類Dev

この単純なループの実行において、PHP7がPython3よりもはるかに高速なのはなぜですか?

分類Dev

Pythonでコミットした後でもsqlite3にデータが挿入されない

分類Dev

jQueryは、3つのAJAX呼び出しとループが実行された後に実行されます

分類Dev

モジュールが直接実行される場合にのみ ES6 コードを実行する

分類Dev

Pythonスクリプトの実行中にpylintを実行して、pylintがコードを渡すとコードが実行され、そうでない場合はpylintエラーが表示されるようにすることはできますか?

分類Dev

Pythonでn = [1,2,3,4,5,6,7,8]、n [:6:-2]が[8]であるのはなぜですか?

分類Dev

コードはPython2ではなくPython3で実行されます

分類Dev

Python 3 tkinter ウォーター アラームが IF ループで実行されませんでした

分類Dev

cronスケジュールから実行されていないがシェルコマンドを実行しているときに動作するPythonのGoogleスプレッドシート読み取りスクリプト

分類Dev

Python3のFutureとES6のPromiseの違い

Related 関連記事

  1. 1

    次の単純なPython3 strptime()コードがOSXで実行されるのに、Linuxでは実行されないのはなぜですか?

  2. 2

    Python3 PlaysoundTkinterコードが期待どおりに実行されていない

  3. 3

    print()関数は、Python3でforループが終了した後にのみ実行されます

  4. 4

    Pythonでwhileループが正しく実行されていない-1回の実行後に終了する

  5. 5

    Updating choice = (choice % 6) + 1 from python 2 to python 3

  6. 6

    Python3:関数とwhileループを使用してリストの項目を変更します。コードが正しく実行されないのはなぜですか?

  7. 7

    スレッド内のforループはPython3で1回実行されます

  8. 8

    最終的に実行されていない後のPythonコード

  9. 9

    Windowsサービスとして実行されているPython:OSError:[WinError 6]ハンドルが無効です

  10. 10

    Pythonコードが完全に実行されないのはなぜですか

  11. 11

    Python、Gtk3:他のものが実行されている間にプログレスバーをパルス化する方法

  12. 12

    なぜPython3はコメントアウトされたコードを実行したのですか?

  13. 13

    奇数のネストされたループが適切に壊れない(Python 3.x)

  14. 14

    Python SQLite3、テーブルに更新が表示されない

  15. 15

    3 秒以内にコードが実行されない場合にのみブロックを実行する

  16. 16

    execを使用したPython3動的インポート-「as」が実行されないのはなぜですか?

  17. 17

    Python:(1)入力のループ-(2)詳細なテキスト-(3)コードの続行

  18. 18

    Python SQLite3:行を繰り返しフェッチしたいが、コードが1行おきにプルしている

  19. 19

    Javascript / ES6で、PythonコードがJupyter Notebookで実行を終了するのを待つにはどうすればよいですか?

  20. 20

    この単純なループの実行において、PHP7がPython3よりもはるかに高速なのはなぜですか?

  21. 21

    Pythonでコミットした後でもsqlite3にデータが挿入されない

  22. 22

    jQueryは、3つのAJAX呼び出しとループが実行された後に実行されます

  23. 23

    モジュールが直接実行される場合にのみ ES6 コードを実行する

  24. 24

    Pythonスクリプトの実行中にpylintを実行して、pylintがコードを渡すとコードが実行され、そうでない場合はpylintエラーが表示されるようにすることはできますか?

  25. 25

    Pythonでn = [1,2,3,4,5,6,7,8]、n [:6:-2]が[8]であるのはなぜですか?

  26. 26

    コードはPython2ではなくPython3で実行されます

  27. 27

    Python 3 tkinter ウォーター アラームが IF ループで実行されませんでした

  28. 28

    cronスケジュールから実行されていないがシェルコマンドを実行しているときに動作するPythonのGoogleスプレッドシート読み取りスクリプト

  29. 29

    Python3のFutureとES6のPromiseの違い

ホットタグ

アーカイブ