Python中的字符串操作和编码Unicode详解
发布时间 - 2026-01-10 22:37:06 点击率:次本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。

字符串类型
str:Unicode字符串。采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替。无论用哪种方式进行制定,在Python内部存储时没有区别。
bytes:二进制字符串。由于jpg等其他格式的文件不能用str进行显示,所以才用bytes来表示,bytes的每个字节为一个0-255的数字。如果打印的时候,Python会把能够用ASCII表示的部分显示为ASCII,这样方便阅读。bytes几乎支持除了格式化以外的所有str的方法,甚至包括了re模块
bytearray() :二进制可原地变动的字符串。
utf-8编码范围
| 范围 | 字节数 | 存储格式 |
| 0x0000~0x007F (0 ~ 127) | 1字节 | 0xxxxxxx |
| 0x0080~0x07FF(128 ~ 2047) | 2字节 | 110xxxxx 10xxxxxx |
| 0x0800~FFFF(2048 ~ 65535) | 3字节 | 1110xxxx 10xxxxxx 10xxxxxx |
| 0x10000~1FFFFFF(65536 ~ 2097152) | 4字节 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
| 0x2000000~0x3FFFFFF | 5字节 | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
| 0x4000000~0x7FFFFFFF) | 6字节 | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
字节顺序标记BOM
BOM是byte order marker的缩写,
指定编码写入时的规则
Python在使用'utf-8'编码写入文件时不会写入BOM头,但是如果指定编码'utf-8-sig'则会迫使Python写入一个BOM头。
使用'utf-16-be'不会写入一个BOM头,但是采用'utf-16'则会写入一个BOM头。
>>> open('h.txt','w',encoding='utf-8-sig').write('aaa')
3
>>> open('h.txt','rb').read()
b'\xef\xbb\xbfaaa'
>>> open('h.txt','w',encoding='utf-16').write('bbb')
3
>>> open('h.txt','rb').read()
b'\xff\xfeb\x00b\x00b\x00'
>>> open('hh.txt','w',encoding='utf-16-be').write('ccc')
3
>>> open('hh.txt','rb').read()
b'\x00c\x00c\x00c'
>>> open('h.txt','w',encoding='utf-8').write('ddd')
3
>>> open('h.txt','rb').read()
b'ddd'
读取时的规则
如果指定了正确的编码,那么BOM会忽略,否则BOM会显示为乱码或者返回异常。
>>> open('h.txt','r').read()
'锘縟dd'
>>> open('h.txt','r',encoding='utf-8-sig').read()
'ddd'
编码与解码
- chr和ord
>>> ord('中') #20013
>>> chr(20013) #'中'
- 把Unicode硬编码进字符串中。
'\xhh':用2位十六进制来表示一个字符
'\uhhhh':用4位十六进制来表示一个字符:
'\Uhhhhhhhh':用8位十六进制来表示一个字符
>>> s = 'py\x74h\u4e2don' #'pyth中on'
str和bytes, bytearray进行转换
str.encode(encoding='utf-8')
bytes(s,encoding='utf-8')
bytes.decode(encoding='utf-8')
str(B, encoding='utf-8')
bytearray(string, encoding='utf-8')
bytearray(bytes)
文档编码声明
Python默认使用utf-8编码。
# -*- coding: latin-1 -*- :表示声明文档为latin-1编码。
帮助函数
sys.platform #'win32' sys.getdefaultencoding() # 'utf-8' sys.byteorder #'little' s.isalnum() #s表示字符串 s.isalpha() s.isdecimal s.isdigit() s.isnumeric() s.isprintable() s.isspace() s.isidentifier() #如果字符串可以用作变量名,那么返回True s.islower() s.isupper() s.istitle()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# python
# unicode字符串
# python中字符串操作
# unicode
# 操作
# 彻底搞懂Python字符编码
# python中的编码知识整理汇总
# python编码总结(编码类型、格式、转码)
# Python编码规范摆脱Python编码噩梦
# 则会
# 文档
# 可以用
# 均为
# 朋友们
# 给大家
# 会把
# 这篇文章
# 不能用
# 多说
# 哪种
# 才用
# 变量名
# 单引号
# 双引号
# 来代替
# 有疑问
# x07FF
# xxxxxxx
# xxxxx
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
怎么用AI帮你为初创公司进行市场定位分析?
如何用y主机助手快速搭建网站?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Python文件操作最佳实践_稳定性说明【指导】
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
北京网站制作的公司有哪些,北京白云观官方网站?
java ZXing生成二维码及条码实例分享
如何快速上传自定义模板至建站之星?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Linux网络带宽限制_tc配置实践解析【教程】
Laravel如何实现数据库事务?(DB Facade示例)
JavaScript如何操作视频_媒体API怎么控制播放
网站建设要注意的标准 促进网站用户好感度!
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
EditPlus中的正则表达式 实战(4)
5种Android数据存储方式汇总
Python文件异常处理策略_健壮性说明【指导】
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
IOS倒计时设置UIButton标题title的抖动问题
韩国服务器如何优化跨境访问实现高效连接?
Laravel怎么使用Intervention Image库处理图片上传和缩放
香港服务器租用每月最低只需15元?
Laravel如何配置和使用缓存?(Redis代码示例)
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何在阿里云完成域名注册与建站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
Java类加载基本过程详细介绍
简历在线制作网站免费版,如何创建个人简历?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
如何用VPS主机快速搭建个人网站?
米侠浏览器网页背景异常怎么办 米侠显示修复
nodejs redis 发布订阅机制封装实现方法及实例代码
装修招标网站设计制作流程,装修招标流程?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
网站建设整体流程解析,建站其实很容易!
如何快速打造个性化非模板自助建站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
利用python获取某年中每个月的第一天和最后一天
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Linux系统命令中tree命令详解
java中使用zxing批量生成二维码立牌
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验

