浅谈python中str字符串和unicode对象字符串的拼接问题

yipeiwu_com6年前Python基础

str字符串

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的优点是便于跨平台。

s1 = u'中文'     # s1: <type 'unicode'>
s2 = unicode('中文', 'utf-8') # utf8是在指定解码方式, s2: <type 'unicode'>

str字符串和unicode字符串拼接

只要注意正确的decode、encode方式,统一编码后就能顺利地拼接了。

# -*- 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对象字符串的拼接问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python之PyMongo使用总结

 PyMongo是什么 PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成. 安装 环境:Ubuntu 14.04+pyt...

pandas按行按列遍历Dataframe的几种方式

pandas按行按列遍历Dataframe的几种方式

遍历数据有以下三种方法: 简单对上面三种方法进行说明: iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[n...

python中使用xlrd读excel使用xlwt写excel的实例代码

python中使用xlrd读excel使用xlwt写excel的实例代码

在数据分析和运营的过程中,有非常多的时候需要提供给别人使用,提供的形式有很多种,最经常使用的是Excel, 而 数据的统计和分析采用的是 python, 使用 python 把数据存在E...

Python散点图与折线图绘制过程解析

Python散点图与折线图绘制过程解析

这篇文章主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在数据分析的过程中,经常需要将...

python的socket编程入门

Flask或者其他框架都是封装的比较完善,我们可以不去关注路由、SESSION等到底是怎么实现的,现在我们使用socket来实现一个带有注册、登录功能的To do网站,这样能对后端框架了...