浅谈python中str字符串和unicode对象字符串的拼接问题
作者:Joy_Shen 时间:2022-03-27 22:00:32
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文件中读入的。
来源:https://blog.csdn.net/index20001/article/details/78974814
标签:python,str,unicode
0
投稿
猜你喜欢
简单介绍利用TK在Python下进行GUI编程的教程
2023-01-05 21:24:25
python小项目之五子棋游戏
2022-07-12 06:24:23
python os模块在系统管理中的应用
2022-12-17 04:37:23
Ext2.0.2经典的一个JS组件(带EXT中文手册)
2009-04-13 12:24:00
Python 相对路径报错:"No such file or directory"'原因及解决方法
2021-08-12 05:34:00
python matplotlib.pyplot.plot()参数用法
2023-07-13 17:39:48
简单介绍各种浏览器中的本地存储方法
2012-04-26 16:37:34
php的RSA加密解密算法原理与用法分析
2023-07-13 11:27:14
解决python 读取excel时 日期变成数字并加.0的问题
2021-07-11 18:53:41
Selenium自动化测试工具使用方法汇总
2022-02-10 16:26:21
用python记录运行pid,并在需要时kill掉它们的实例
2023-07-31 17:30:18
python中的argparse基本用法(使用步骤)
2023-06-12 20:01:36
Python实现七彩蟒蛇绘制实例代码
2022-04-28 20:03:37
致Python初学者 Anaconda入门使用指南完整版
2021-09-08 04:48:36
ASP 自动采集实现代码
2011-03-07 11:17:00
十行Python代码实现文字识别功能
2024-01-01 14:55:09
python+Matplotlib 绘制带置信区间的折线图
2022-04-29 06:23:40
Div+CSS布局入门教程
2007-09-13 12:52:00
js检查全角字符正则表达式[\\uFE30-\\uFFA0]
2008-10-30 12:39:00
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2023-08-18 20:01:36