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


Posted in Python onDecember 04, 2018

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使用Flask框架获取用户IP地址的方法
Mar 21 Python
Django Admin实现上传图片校验功能
Mar 06 Python
python基础之入门必看操作
Jul 26 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
Python语言快速上手学习方法
Dec 14 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python shutil模块用法实例分析
Oct 02 Python
Python二元赋值实用技巧解析
Oct 25 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Django之全局使用request.user.username的实例详解
May 14 Python
python中__slots__节约内存的具体做法
Jul 04 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 #Python
对web.py设置favicon.ico的方法详解
Dec 04 #Python
对python 命令的-u参数详解
Dec 03 #Python
python 接收处理外带的参数方法
Dec 03 #Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 #Python
浅谈python脚本设置运行参数的方法
Dec 03 #Python
Linux 修改Python命令的方法示例
Dec 03 #Python
You might like
深入了解php4(1)--回到未来
2006/10/09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP 采集心得技巧
2009/05/15 PHP
php给图片加文字水印
2015/07/31 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python numpy 常用函数总结
2017/12/07 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
四年大学生活的个人自我评价
2013/12/11 职场文书
校庆筹备方案
2014/03/30 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
创先争优宣传标语
2014/10/08 职场文书
世界遗产导游词
2015/02/13 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书