我正在使用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〜
答案 0 :(得分:5)
您可能会将Byte Order Mark (BOM)作为第一行的第一个字符。
有关处理它的信息是here
答案 1 :(得分:5)
您的文件开头有一个UTF-8 BOM。不要考虑检查第一个角色。不要使用utf8
编码,而是将utf_8_sig encoding与codecs.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
>>>