Python代码文本文件readline读取一行为啥包括了BOM字节顺序标记?
本帖最后由 ustone 于 2024-12-19 20:11 编辑Python代码文本文件readline读取一行为啥包括了BOM字节顺序标记?
>>> f=open('d:/bar.txt','r',encoding='utf-8')
>>> f.readline()
'\ufeff新年都未有芳华,二月初惊见草芽。\n'
>>> f.readline()
'白雪却嫌春色晚,故穿庭树作飞花。'
>>>
把 utf-8 改成 utf-8-sig 就可以了
f = open('d:/bar.txt', 'r', encoding = 'utf-8-sig')
print(f.readlines())
scoopydoo 发表于 2024-12-20 05:13
把 utf-8 改成 utf-8-sig 就可以了
我要吐槽一下Python的文档,从open函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
第几段介绍encoding跳转到codecs,很长的一篇翻到最后才介绍:
encodings.utf_8_sig — UTF-8 codec with BOM signature
This module implements a variant of the UTF-8 codec. On encoding, a UTF-8 encoded BOM will be prepended to the UTF-8 encoded bytes. For the stateful encoder this is only done once (on the first write to the byte stream). On decoding, an optional UTF-8 encoded BOM at the start of the data will be skipped.
感觉文档太难用了,甚至比Qt的都不如。 ustone 发表于 2024-12-20 08:02
我要吐槽一下Python的文档,从open函数
open(file, mode='r', buffering=-1, encoding=None, errors=Non ...
文档的可读性固然重要,但更重要的是严谨可靠,一般情况下直接读文档对大多数人来说未必是最好的学习方式,否则也不会有那么多的书籍和教程了。
其实现在学习的最快最方便的途径是善用搜索引擎,最近 AI 也火了起来,但是偶尔会一本正经地胡说八道,还不可全信。
所谓的面向搜索引擎编程、面向 Stackoverflow 编程,其实是一种很好的学习方式。 scoopydoo 发表于 2024-12-20 08:13
文档的可读性固然重要,但更重要的是严谨可靠,一般情况下直接读文档对大多数人来说未必是最好的学习方式 ...
入门学习我都是看书,查具体的函数用法才会看文档。 ustone 发表于 2024-12-20 08:37
入门学习我都是看书,查具体的函数用法才会看文档。
还是那句话,要善用搜索,其实 Stackoverflow 等网站上面几乎涵盖了初学者可能遇到的所有问题。 因为 utf-8-bom 在 linux 世界就是 \r\n 一样是个异类。
:lol scoopydoo 发表于 2024-12-20 08:48
还是那句话,要善用搜索,其实 Stackoverflow 等网站上面几乎涵盖了初学者可能遇到的所有问题。
文档是第一手的,Stackoverflow 确实也不错。 junyee 发表于 2024-12-20 08:52
因为 utf-8-bom 在 linux 世界就是 \r\n 一样是个异类。
是个道理,不过函数应该自动判断处理。 ustone 发表于 2024-12-20 08:59
是个道理,不过函数应该自动判断处理。
如果自动处理了,就会有人说为啥不给机会让俺自己判断、处理 ...... ustone 发表于 2024-12-20 08:56
文档是第一手的,Stackoverflow 确实也不错。
没有人入门学习是看参考手册这类详尽严谨但是阅读吃力的文档。
本帖最后由 MF35_ 于 2024-12-20 14:40 编辑
编码格式的声明和转换是要手动处理的,所有的语言都是如此
scoopydoo 发表于 2024-12-20 09:12
如果自动处理了,就会有人说为啥不给机会让俺自己判断、处理 ......
如果对一系列文件open操作(for循环),encoding不一样,代码很难统一 scoopydoo 发表于 2024-12-20 09:14
没有人入门学习是看参考手册这类详尽严谨但是阅读吃力的文档。
没错 MF35_ 发表于 2024-12-20 14:38
编码格式的声明和转换是要手动处理的,所有的语言都是如此
可能是吧
页:
[1]