Python CSV读取中的\ufeff

按照教程输入好好的,但是结果看一眼比答案貌似多了一个\ufeff,度娘以后,答案如下:

几个概念性的东西

ANSCII: 标准的 ANSCII 编码只使用7个比特来表示一个字符,因此最多编码128个字符。扩充的 ANSCII 使用8个比特来表示一个字符,最多也只能
编码 256 个字符。

UNICODE: 使用2个甚至4个字节来编码一个字符,因此可以将世界上所有的字符进行统一编码。

UTF: UNICODE编码转换格式,就是用来指导如何将 unicode 编码成适合文件存储和网络传输的字节序列的形式 (unicode -> str)。像其他的一些编码方式 gb2312, gb18030, big5 和 UTF 的作用是一样的,只是编码方式不同。

在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识。

什么是BOM?

BOM = Byte Order Mark 是Unicode规范中推荐的标记字节顺序的方法。比如说对于UTF-16,如果接收者收到的BOM是FEFF,表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明“我是UTF-8编码”。BOM的UTF-8编码是EF BB BF(用UltraEdit打开文本、切换到16进制可以看到)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

解决示例如下:

# filename: example.py
# conding=utf-8

f = open("news.txt", "r",encoding='utf-8')
file = f.read()
file_list = file.split(",")
print(file_list)

file_list2 = file.encode('utf-8').decode('utf-8-sig')
print(file_list2)

打印结果如下

['\ufeff新华社北京2月8日电2月8日']
新华社北京2月8日电2月8日

参考文章

https://www.cnblogs.com/mjiang2017/p/8431977.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容