浅谈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实现封装得到virustotal扫描结果
Oct 05 Python
Python 字典dict使用介绍
Nov 30 Python
python使用datetime模块计算各种时间间隔的方法
Mar 24 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python设计模式之代理模式简单示例
Jan 09 Python
python2.7实现爬虫网页数据
May 25 Python
Python datetime包函数简单介绍
Aug 28 Python
python中property和setter装饰器用法
Dec 19 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 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
PHP 程序员应该使用的10个组件
2009/10/31 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解python之配置日志的几种方式
2017/05/22 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
工程总经理工作职责
2013/12/09 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
社区食品安全实施方案
2014/03/28 职场文书
写字楼租赁意向书
2014/07/30 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS