为什么要转换?
首先,python里面不存在字节字符串的格式化操作,即bytes是没办法格式化的,所以在需要将字符串格式化的时候,要先转成string。(另外说一句,如果想要字节字符串,可以先使用标准的文本字符串,然后将其编码为字节字符串)
再有就是在解析网页的时候,会遇到获取到的网页(比如使用requests.content)是字节字符串,需要先转换一下在进行解析,当然像beautifulsoup这种的会自动解析,不需要转换。
# bytes转字符串方式一
b=b'\xe9\x80\x86\xe7\x81\xab'
string=str(b,'utf-8')
print(string)
# bytes转字符串方式二
b=b'\xe9\x80\x86\xe7\x81\xab'
string=b.decode() # 第一参数默认utf8,第二参数默认strict
print(string)
# bytes转字符串方式三
b=b'\xe9\x80\x86\xe7\x81haha\xab'
string=b.decode('utf-8','ignore') # 忽略非法字符,用strict会抛出异常
print(string)
# bytes转字符串方式四
b=b'\xe9\x80\x86\xe7\x81haha\xab'
string=b.decode('utf-8','replace') # 用?取代非法字符
print(string)
# 字符串转bytes方式一
str1='逆火'
b=bytes(str1, encoding='utf-8')
print(b)
# 字符串转bytes方式二
b=str1.encode('utf-8')
print(b)
输出:
C:\Users\horn1\Desktop\python\42-torrentParser>python convert.py 逆火 逆火 逆haha 逆�haha� b'\xe9\x80\x86\xe7\x81\xab' b'\xe9\x80\x86\xe7\x81\xab' C:\Users\horn1\Desktop\python\42-torrentParser>