Python:文本文件中的字符数

时间:2012-01-19 19:04:57

标签: python

我正在尝试获取文件中的字符数。 但是当我在导入的txt文件上使用'len'时,它会返回位数而不是字符数。

text1=open('text1.txt','r+').read()
print len(text1)

1256664

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

如果问题是您的文件是编码的,比如UTF-8,那么您应该在计算字符前对其进行解码:

utf8_text=open('text1.txt','r+').read()
unicode_data = utf8_text.decode('utf8')

print len(unicode_data)

答案 1 :(得分:1)

会返回位数!

with open('abc') as f:
    print len(f.read())

内容为4def\n的结果。也许你的文本是用UTF-16/32 / ......编写的,它对一个字符使用多个字节?请详细说明你的问题。

答案 2 :(得分:0)

实际上它是bytes读取的数量。如果您使用的是Linux:ls -lh text1.txt应该为您提供1227K

此数字包括文件中的字符数,但也会计算行结尾。

PS我的回答没有考虑到文件编码。在UTF-8下,字符将不再是单字节的1字节字符,如ASCII格式。