python3.x中bytes与字符串详

2023-01-31 02:01:42 字符串 bytes python3

原文地址:Http://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_Python_2_x_str_unicode_vs_python_3_x_bytes_str/

python3.x bytes: 

某种编码(UTF-8,GBK等)类型的字节序列

普通字符串加上字母b作为前缀,就是表示bytes字符串了。

需要注意的是:

  • bytes,都是某种特定的编码的字符串
  • bytes,如果写上对应的值的话,那么只能直接写ASCII字符串,即只能写英文单词这种
  • 而如果想要写中文汉字这种,需要写\xYY这种16进制的值的形式才可以

    • 其中\xYY的值到底是多少,是你自己去通过相应的办法,将其编码为特定类型的字符所获得的
    • 其中如何把字符串,转换为某种编码的bytes的值,可以参考下面的"str->bytes"中的代码
    • 一般来说,我们在实际编程中,所遇到的是,你自己需要知道当前获得的字符串变量,是bytes,并且知道其是什么编码,基本上就可以了,然后就可以用后面介绍的bytesVariable.decode("specificEncoding")去解码为你需要的Unicode的str字符串了

bytes->str:
【核心代码逻辑】
1.如果你要写对应的bytes变量,那么需要加上前缀字母b;

注意:
不过要注意的是,只能写英文单词,而不能直接写中文等非ASCII的字符。
如果非要写非ASCII字符,那么只能自己想办法先将其转化为对应某种编码的byte,内部存储的内容,是对应的各个字节,打印出来的效果就是\xYY这种十六进制的值。

其中:
如果把对应的中文转换对特定编码的bytes的16进制值,可以参考下面的"str->bytes"的代码。
2.然后用
bytesVariable.decode("specificEncoding")
去解码为对应的str(即Unicode字符串)
其中:specificEncoding是该bytes的编码。

3.然后你就可以拿着Unicode的str,去做你想要的事情了
比如常见的打印出来看看。

【完整代码】
参见下面的:python_3.x_bytes_to_str.py

 

python3.x  str:Unicode类型的字符串

Python 3.x中,直接输出的字符串(被单引号或双引号括起来的),就已经是Unicode类型的str了。

当然,有一些前提:

  • Python文件开始已经声明对应的编码
  • Python文件本身的确是使用该编码保存的
  • 两者的编码类型要一样(比如都是UTF-8或者都是GBK等)

这样Python解析器,才能正确的把你所输出字符串,解析为对应的unicode的str

str->bytes:
【核心代码逻辑】
1.默认写出的字符串,已经就是str,即Unicode,的类型了。
或者你之前已经获得了对应的unicode的str了。

注:当然,如果在Python文件中,需要满足下列条件:
A。Python文件开始已经声明对应的编码
B。Python文件本身的确是使用该编码保存的
C。两者的编码类型要一样(比如都是UTF-8或者都是GBK等)

2.然后调用
unicodeStr.encode("encodingType")
去编码为对应的字节序列bytes,
3.然后后续再进行相应的你所需要的处理

【完整代码】
参见下面的:python_3.x_str_to_bytes.py

 

 

相关文章