python初学者,写一个简单的爬虫程序,在处理标题的时候遇到的问题
按照网文的写法,好像应该先
txt = "大家好我叫123abc"
str1 = txt.decode('gb2312')
str2 = str1.encode('utf-8')
但是编译结果显示
AttributeError: 'str' object has no attribute 'decode'
查过文档后也没有关于decode的定义
请问大家,在这个版本的Python中,对于中英数字混杂的字符串怎样处理?
python初学者,写一个简单的爬虫程序,在处理标题的时候遇到的问题
按照网文的写法,好像应该先
txt = "大家好我叫123abc"
str1 = txt.decode('gb2312')
str2 = str1.encode('utf-8')
但是编译结果显示
AttributeError: 'str' object has no attribute 'decode'
查过文档后也没有关于decode的定义
请问大家,在这个版本的Python中,对于中英数字混杂的字符串怎样处理?
Python 3.5 字符串都是 Unicode 格式。
https://segmentfault.com/a/1190000004613...
https://segmentfault.com/a/1190000004625...
字符串有encode方法,使用txt.encode("utf_8")
将字符串编码为byte类型,byte有decode方法,可以将byte解码。如:txt.encode("utf_8")
--> b'\xe5\xa4\xa7\xe5\xae\xb6\xe5\xa5\xbd\xe6\x88\x91\xe5\x8f\xab123abc'
,之后再使用decode,可以重新获得文本"大家好我叫123abc"。
处理的目的是什么?中英文混杂也只是普通字符串,不需要特殊处理。
Python3的普通字符串是str类型,实际上就是Python2的unicode类型。
要真正理解清楚这个问题,需要看一看字符编码的知识,理解unicode编码方式和实现方式的关系。
粗略的说,Python3使用的str类型并不关心你最终是什么编码,是gb2312还是utf-8,它只是用unicode的字符集编码来表示每一个字符,直到输出到文件流,需要转换为bytes类型时,才用encode指定具体的编码实现方式。
在Python3里,str --encode--> bytes --decode--> str
3 回答2.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
5 回答1.7k 阅读
2 回答1.7k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
4 回答1.6k 阅读
str
类型只有encode
方法,bytes
类型只有decode
方法。爬虫爬下来的文本假设为 txt
试一试
txt.decode('utf-8')
或者txt.decode('gb2312')