str字符串
1
|
s = '中文' # s: <type 'str'>
|
s是个str对象,中文字符串。存储方式是字节码。字节码是怎么存的:
如果这行代码在python解释器中输入&运行,那么s的格式就是解释器的编码格式;
如果这行代码是在源码文件中写入、保存然后执行,那么解释器载入代码时就将s初始化为文件指定编码(比如py文件开头那行的utf-8);
unicode对象字符串
unicode是一种编码标准,具体的实现可能是utf-8,utf-16,gbk等等,这就是中文字符串和unicode有密切关系的原因。
python内部使用两个字节存储一个unicode对象(unicode对象并不只能是字符串,这两个字节还可以存其他内容),为什么要用unicode而不用str呢,因为中文转码的缘故,因为unicode的优点是便于跨平台。
1
2
|
s1 = u '中文' # s1: <type 'unicode'>
s2 = unicode ( '中文' , 'utf-8' ) # utf8是在指定解码方式, s2: <type 'unicode'>
|
str字符串和unicode字符串拼接
只要注意正确的decode、encode方式,统一编码后就能顺利地拼接了。
1
2
3
4
5
6
7
8
9
10
11
12
|
# -*- coding: utf-8 -*-
s1 = '中文'
s2 = u '你好'
print s1 + unicode (s2, 'utf-8' ) # 中文你好
print s1 + s2.decode( 'utf-8' ) # 中文你好
print s1.encode( 'utf-8' ) + s2 # 中文你好
print type (s1) # <type 'str'>
print type (s2) # <type 'unicode'>
print type (s1.decode( 'utf-8' )) # <type 'unicode'>
print type (s2.encode( 'utf-8' )) # <type 'str'>
|
对于str要注意当前环境编码方式,也许是控制台那种设定好了的,也许是你自己在代码中指定的。(看你的代码是在哪里敲的了)
对于unicode对象,一般都是decode得到的,像直接【u'你好'】这种其实不是很常见,所以要注意字符串来源是什么编码,比如从gbk文件或utf8文件中读入的。
以上这篇浅谈python中str字符串和unicode对象字符串的拼接问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/index20001/article/details/78974814