ファイル内の文字数を取得しようとしています。 しかし、インポートされたtxtファイルに 'len'を使用すると、文字数ではなくビット数が返されます。Python:テキストファイルの文字数
text1=open('text1.txt','r+').read()
print len(text1)
1256664
どうすればこの問題を解決できますか?
ファイル内の文字数を取得しようとしています。 しかし、インポートされたtxtファイルに 'len'を使用すると、文字数ではなくビット数が返されます。Python:テキストファイルの文字数
text1=open('text1.txt','r+').read()
print len(text1)
1256664
どうすればこの問題を解決できますか?
問題は、あなたが文字をカウントする前に、それをデコードする必要があり、UTF-8で言う、あなたのファイルがエンコードされていることである場合:
utf8_text=open('text1.txt','r+').read()
unicode_data = utf8_text.decode('utf8')
print len(unicode_data)
これはではありません。ビット数を返します。
with open('abc') as f:
print len(f.read())
結果がdef\n
である場合、4
になります。たぶんあなたのテキストはUTF-16/32/...のようなものでエンコードされていますが、これは1文字に複数のバイトを使用していますか?あなたの問題を詳述してください。
実際にはbytes
の番号です。場合は、Linux上で:ls -lh text1.txt
1227K
を与える必要があります。
この数字にはファイル内の文字数が含まれますが、行末もカウントされます。
PS私の答えはファイルエンコーディングを考慮していません。 UTF-8では、文字はASCIIのような単一の1バイト文字ではなくなりました。
は私たちに、ファイルの内容を表示します。それは私にとってうまくいっているからです。 – RanRag
私は 'hello world \ n'という名前の単純なテストファイルでこれを試してみましたが、文字数はちょうど良い(12を返します)。それを試して、それが動作するかどうかを確認できますか? 'text1'を表示して実際に文字列かどうか調べてみましょう。バイナリモードで読んでいるかもしれません。 – fsong
@fsong文字列として返されないテキストを印刷するときは、インデントとタブなどで印刷します。ファイル情報を見ると、サイズは1,256,664バイトです。 – Julia