python3 字符串转列表出现\ufeff的解决方法

在学习python从文件中读取文件,并将文件中的字符串转化为列表的时候,发现文件头多了一个\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

  BOM是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编码了。
具体方法请看下面代码

Python
1 # filename: example.py 2 # conding=utf-8 3 4 f = open("news.txt", "r",encoding='utf-8') 5 file = f.read() 6 file_list = file.split(",") 7 print(file_list) 8 9 file_list2 = file.encode('utf-8').decode('utf-8-sig') 10 print(file_list2) 11 12 13 #打印结果如下 14 ['\<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/ufeff" title="View all posts in ufeff" target="_blank">ufeff</a></span>新华社北京2月8日电2月8日'] 15 新华社北京2月8日电2月8日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1 # filename: example.py
2 # conding=utf-8
3
4 f = open ( "news.txt" , "r" , encoding = 'utf-8' )
5 file = f . read ( )
6 file_list = file . split ( "," )
7 print ( file_list )
8
9 file_list2 = file . encode ( 'utf-8' ) . decode ( 'utf-8-sig' )
10 print ( file_list2 )
11
12
13 #打印结果如下
14 [ '\ufeff新华社北京2月8日电2月8日' ]
15 新华社北京 2月 8日电 2月 8日
 
Python
不懂的还很多,慢慢积累。
1
2
不懂的还很多,慢慢积累。
 



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值