为什么第一线更长?

时间:2011-04-08 03:29:07

标签: python text-files

我正在使用python来读取txt文档:

f = open(path,"r")
for line in f:
    line = line.decode('utf8').strip()
    length = len(line)
    firstLetter = line[:1]

它似乎有效,但第一行的长度总是更长...... 1

例如: 第一行是“XXXX”,其中X表示中文字符 那么长度将是5,但不是4 和firstLetter将一无所有

但是当它转到第二行和后一行时,它可以正常工作

TKS〜

2 个答案:

答案 0 :(得分:5)

您可能会将Byte Order Mark (BOM)作为第一行的第一个字符。

有关处理它的信息是here

答案 1 :(得分:5)

您的文件开头有一个UTF-8 BOM。不要考虑检查第一个角色。不要使用utf8编码,而是将utf_8_sig encodingcodecs.open()your_byte_string.decode()一起使用...如果BOM存在并且您没有在代码。

>>> bom8 = u'\ufeff'.encode('utf8')
>>> bom8
'\xef\xbb\xbf'
>>> bom8.decode('utf8')
u'\ufeff'
>>> bom8.decode('utf_8_sig')
u'' # removes the BOM
>>> 'abcd'.decode('utf_8_sig')
u'abcd' # doesn't care if no BOM
>>>