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表单安全机制与令牌校验