尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
和小马一起学Python(五)——字符串编码转换、字符串运算符、字符串常见内建函数
01 字符串编码转换字符串编码的本质可以看作是二进制数据与语言文字之间的一种映射或对应关系。它是将字符(不仅仅是语言文字还包括标点符号、控制字符等)转换成一种标准化的二进制表示形式以便计算机能够存储、处理和传输这些信息。1.1 编码格式1ASCII编码字符串的编码起源于ASCII(美国标准信息交换码)由于计算机技术的初始发展主要在美国因此最初的ASCII编码仅涵盖了127个字符包括大小写英文字母、数字以及一些常用符号。比如大写字母A’的编码为65小写字母a’的编码为97。为了满足更多字符表示的需求随后发展了扩展ASCII编码增加了额外的128个字符进一步丰富了字符集的范围。特点仅对10个数字(0-9)、26个大写英文字母(A-Z)、26个小写英文字母(a-2)以及一些其他符号(如标点符号、控制字符等)进行了编码。2GB2312 / GBK编码由于每个国家的语言都有其独特的字符集AScII编码作为最初的字符编码标准无法满足中文等其他语言的表示需求。特别是中文由于其庞大的字符数量(包括汉字、标点符号、拼音等)一个字节(8位)的编码范围(0-255即256个字符)远远不足以覆盖所有的中文字符。因此为了在计算机中有效地表示和显示中文字符中国制定了GB2312编码标准。GB2312是一个扩展的字符编码标准它采用了两个字节(16位)来表示一个字符从而大大扩展了可表示的字符范围。这样GB2312就能够包含数干个常用的中文字符、标点符号以及其他一些特殊符号。GB2312虽然大大扩展了字符表示的范围但仍不能完全覆盖所有中文字符特别是那些不常用的字和繁体中文字符。为了克服GB2312的局限性GB2312编码逐渐被一些更全面的编码标准所取代如GBK、GB18030等。特点GBK 和GB2312等是我国制定的中文编码标准它们兼容ASCII编码使用一个字节表示英文字符(包括大小写字母、数字及标点符号)同时扩展使用两个字节来表示丰富的中文字符。3Unicode编码万国码由于全世界存在上百种语言每种语言都有其独特的字符集和编码标准这导致了在多种语言混合的文本中可能出现编码冲突和乱码的问题。为了解决这个问题unicode编码应运而生。特点unicode编码是一种统一的字符编码系统用于表示世界上几乎所有的字符。在大多数情况下unicode字符可以被编码为2个字节但对于某些非常偏僻或特殊的字符可能需要使用4个字节来表示。4UTF-8编码可变长编码尽管Unicode编码为全球字符的统一表示提供了解决方案但在处理主要由英文字符组成的文本时其固定的编码长度可能导致存储空间的不必要浪费。为了更有效地利用空间特别是针对包含大量英文字符的文本于是产生了UTF-8编码。特点UTF-8是国际通用的编码方式。常用的英文字符和标点符号仅占用1个字节多数欧洲语言的字符需要2个字节而中文字符等则通常是3个字节只有极少数非常生僻的字符才会被编码为4个字节。因此在传输或存储包含大量英文字符的文本时采用 uTF-8编码能够显著节省存储空间。1.2 字符串编码转换在Python中str(字符串)和bytes(字节二进制数据)是两种基础且常用的数据类型它们各自扮演着不同的角色。str类型主要用于文本数据的处理它以Unicode编码在内存中表示这使得它能够表示世界上几乎所有的字符集。而bytes类型则直接对应于计算机中的二进制数据常用于文件操作、网络通信等场景。str和bytes类型之间不能直接进行拼接或混合使用因为它们代表了不同的数据层面str是人类可读的文本形式而bytes是计算机底层的二进制数据表示。当需要将文本数据(str)在网络中传输或保存到磁盘时必须先将其转换为二进制形式(bytes)因为网络协议和文件系统通常都是以字节为单位进行数据传输和存储的。1.2.1 encode()编码和decode()解码将字符串(str)转换为指定编码的字节串(bytes)。转换时字符串中的每个字符按照指定的编码方式被映射为一系列的字节。默认情况下Python使用UTF-8编码进行转换但也可以指定其他编码如GBKASCII等。# 字符串 st 你今天真帅 # 转换为utf-8编码的字节序列 utf8_bytes st.encode(utf-8) # 输出结果及类型 print(utf8_bytes, type(utf8_bytes))# utf-8编码的字节序列 utf8_bytes b\xe4\xbd\xa0\xe4\xbb\x8a\xe5\xa4\xa9\xe7\x9c\x9f\xe5\xb8\x85\xef\xbc\x81 # 解码为字符串 str utf8_bytes.decode(utf-8) print(str, type(str))注意在进行编码转换时必须确保使用的编码方式与原始数据的编码方式相匹配否则可能会导致数据损坏或解码错误。02 字符串运算操作符描述实例字符串连接a b 输出结果Hello Python*重复输出字符串a * 2 输出结果Hello Hello[]通过索引获取字符串中字符a[1] 输出结果e[ : ]截取字符串中的一部分a[1:4] 输出结果ellin成员运算符——如果字符串中包含给定的字符返回TrueH in a 输出结果Truenot in成员运算符——如果字符串中不包含给定的字符返回TrueZ not in a 输出结果Truer / R原始字符串——所有的字符串都是直接按照字面的意思来使用没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母r”(可以大小写)以外与普通字符串有着几乎完全相同的语法。str1 Hello str2 Python # 字符串运算符 print(str1 str2) # HelloPython # 算数运算符 print(1 1) # 2 # 字符串运算符 * print(str1 * 2) # HelloHello # 字符串运算符 in print(e in str1) # True # 字符串运算符 not in print(c not in str1) # True print(e not in str1) # False print(el not in str1) # False print(ac not in str1) # True # 字符串运算符 r / R print(r\n) print(R\n)2.1 字符串运算符[]在Python中索引(下标)用于快速定位并获取字符串中特定位置的元素。字符串abcdefghi正序012345678倒序-9-8-7-6-5-4-3-2-1# 字符串运算符[] print(str1[0]) # H print(str1[1]) # e print(str1[2]) # l print(str1[3]) # l print(str1[4]) # o print(str1[-1]) # o print(str1[-2]) # l print(str1[-3]) # l print(str1[-4]) # e print(str1[-5]) # H2.2 字符串运算符[:]在Python中切片是一种非常有用的操作它允许你获取序列如字符串、列表、元组)中的一部分元素。切片操作通过指定序列的起始索引、结束索引和步长来实现返回一个新的序列包含原序列中指定范围内的元素。基本语法格式seq[start:stop:step]start可选切片的起始索引包含如果省略则默认为序列的开头stop可选切片的起始索引不包含如果省略则默认为序列的结尾step可选切片时的步长如果省略则默认为1。步长的绝对值大小决定切取数据的间隔正负号决定切取方向。正数表示从左往右取值负数表示从右往左取值。str1 HelloPython # 字符串运算符[:] print(str1[::]) # HelloPython print(str1[2:5:]) # llo print(str1[::2]) # Hloyhn print(str1[::-1]) # nohtyPolleH03 字符串常见内置函数3.1 查找元素3.1.1 find(sub, start, end)查找子字符串在字符串中首次出现的位置。如果找到了子字符串则返回该子字符串首次出现的索引。如果没有找到则返回-1。基本语法格式str.find(sub[, start[, end]])sub要查找的子字符串start可选开始查找的位置。如果省略则从字符串的开头开始查找。end可选结束查找的位置。字符串的查找会在这个位置之前停止。如果省略则查找会一直进行到字符串的末尾。str1 HelloPython # 查找字符串 print(str1.find(l)) # 2 print(str1.find(llo)) # 2 print(str1.find(to)) # -1 print(str1.find(P, 2)) # 5 print(str1.find(l, 0, 2)) # -1 print(str1.find(e, 0, 2)) # 13.1.2 index(sub, start, end)查找子字符串在字符串中首次出现的位置。如果找到了子字符串则返回该子字符串首次出现的索引;如果没有找到则抛出一个ValueError异常。基本语法格式str.index(sub[, start[, end]])sub要查找的子字符串start可选开始查找的位置。如果省略则从字符串的开头开始查找。end可选结束查找的位置。字符串的查找会在这个位置之前停止。如果省略则查找会一直进行到字符串的末尾。str1 HelloPython # 查找字符串 print(str1.index(l)) # 2 print(str1.index(llo)) # 2 print(str1.index(to)) # ValueError: substring not found print(str1.index(P, 2)) # 5 print(str1.index(l, 0, 2)) # ValueError: substring not found print(str1.index(e, 0, 2)) # 13.1.3 count(sub, start, end)统计子字符串在字符串中出现的次数。如果子字符串在字符串中不存在则返回0。基本语法格式str.count(sub[, start[, end]])sub要查找的子字符串start可选开始查找的位置。如果省略则从字符串的开头开始查找。end可选结束查找的位置。字符串的查找会在这个位置之前停止。如果省略则查找会一直进行到字符串的末尾。str1 HelloPython # 统计字符串 print(str1.count(l)) # 2 print(str1.count(llo)) # 1 print(str1.count(to)) # 0 print(str1.count(P, 2)) # 1 print(str1.count(l, 0, 2)) # 0 print(str1.count(e, 0, 2)) # 13.2 修改元素3.2.1 replace(old, new, count)替换字符串中的某些部分。基本语法格式str.replace(old, new[, count])old需要被替换掉的子字符串。new用于替换old的新字符串。count可选指定替换的最大次数。如果省略此参数或其值小于0则替换操作将进行到底即替换所有匹配的子字符串。如果指定了count的值则只替换前count次出现的old。str1 HelloWorld,HelloPython # 替换字符串 print(str1.replace(Hello, Hi)) # HiWorld,HiPython print(str1.replace(Hello, Hi, 1)) # HiWorld,HelloPython3.2.2 split(sep, maxsplit)将字符串分割成列表中的子字符串。默认情况下会根据任何空白字符(如空格、换行符\n、制表符\t等)来分割字符串也可以通过指定一个分隔符来改变分割行为。基本语法格式str.split(sep None, maxsplit -1)sep分隔符默认为None表示使用空白字符作为分隔符。如果指定了其他字符串作为分隔符则该方法会在这个指定的分隔符处分割字符串。maxsplit可选参数指定分割的最大次数。默认为-1表示分割次数没有限制即分割所有可能的子字符串。如果指定了非负整数n则字符串只会被分割n次并生成一个包含n1个元素的列表。str1 Hello World, Hello Python # 分割字符串 print(str1.split()) # Hello World, Hello Python print(str1.split(,)) # Hello World Hello Python print(str1.split()) # Hello World, Hello Python print(str1.split( , 1)) # Hello World, Hello Python3.2.3 strip(chars)去除字符串首尾的指定字符(默认情况下是去除空白字符包括空格、换行符\n、制表符\t等)。基本语法格式str.strip([chars])chars可选要从字符串开头和末尾去除的字符集合。如果未指定将去除所有空白字符。chars的参数是一个字符串包含要从原字符串中去除的字符。strip方法会去除字符串开头和末尾出现的chars中的任意字符直到遇到不在chars中的字符为止。str1 Hello Python str2 xxxxxxHello Pythonxxxxxx str3 xxyxxyHello Pythonyyyxxx str4 PxyyxPHello PythonxPPyyP # 去除字符串 print(str1.strip()) # Hello Python print(str2.strip(x)) # Hello Python print(str3.strip(xy)) # Hello Python print(str4.strip(xyP)) # Hello Python3.2.4 lower()将字符串中的所有大写字母转换为小写字母。基本语法格式str.lower()str1 Hello Python print(str1.lower())3.2.5 upper()将字符串中的所有小写字母转换为大写字母。基本语法格式str.upper()str1 Hello Python print(str1.upper())3.3 判断元素3.3.1 startswith(prefix[, start[, end]])检查字符串是否以指定的前缀开始。如果字符串以指定的前缀开始则返回True;否则返回False。基本语法格式str.startswith(prefix[, start[, end]])prefix要检查的前缀。start可选开始检查的位置如果省略则从字符串的开头开始检查。end可选结束检查位置。字符串的检查会在这个位置之前停止。如果省略则检查会一直进行到字符串的末尾。str1 Hello Python # 字符串的检查 print(str1.startswith(H)) # True print(str1.startswith(Hello)) # True print(str1.startswith(Heloo)) # False print(str1.startswith(llo, 1)) # False print(str1.startswith(H, 0, 6)) # True print(str1.startswith(H, 1, 6)) # False3.3.2 endwith(suffix[, start[, end]])检查字符串是否以指定的前缀开始。如果字符串以指定的前缀开始则返回True;否则返回False。基本语法格式str.startswith(suffix[, start[, end]])suffix要检查的后缀。start可选开始检查的位置如果省略则从字符串的开头开始检查。end可选结束检查位置。字符串的检查会在这个位置之前停止。如果省略则检查会一直进行到字符串的末尾。str1 Hello Python! # 字符串的检查 print(str1.endswith(!)) # True print(str1.endswith(n!)) # True print(str1.endswith(on)) # False print(str1.endswith(!, 3)) # True print(str1.endswith(llo, 0, 5)) # True print(str1.endswith(on!, 1, 13)) # True3.3.3 isupper()检查字符串中的所有可识别的字母字符是否都是大写。如果字符串中至少有一个可识别的字母字符并且所有这些字母字符都是大写则返回True。如果字符串为空、不包含任何字母字符或者包含至少一个小写字母字符则返回False。基本语法格式str.isupper()str1 Hello Python! str2 HELLO PYTHON! str3 str4 PYTHON 3.1 # 字符串是否全为大写的检查 print(str1.isupper()) # False print(str2.isupper()) # True print(str3.isupper()) # False print(str4.isupper()) # True3.3.4 islower()检查字符串中的所有可识别的字母字符是否都是小写。如果字符串中至少有一个可识别的字母字符并且所有这些字母字符都是小写则返回True。如果字符串为空、不包含任何字母字符或者包含至少一个大写字母字符则返回False。基本语法格式str.islower()str1 Hello Python! str2 hello python! str3 str4 python 3.1 # 字符串是否全为大写的检查 print(str1.islower()) # False print(str2.islower()) # True print(str3.islower()) # False print(str4.islower()) # True声明本文为个人学习笔记有自己的理解和思考旨在与大家交流学习。笔记内容整理自B站UP主「哔哩 Python 学习社」的视频教程《如何逼自己一周学会〈Python〉》非本人原创。如有内容错误欢迎各位指正讨论。尊重原创感谢UP主的分享。
RELATED

相关推荐

5个信号识别垃圾账号:anti-slop用户检查如何过滤AI slop贡献者

5个信号识别垃圾账号:anti-slop用户检查如何过滤AI slop贡献者

【免费下载链接】anti-slop A GitHub action that detects and automatically closes low-quality and AI slop PRs. 项目地址: https://gitcode.com/gh_mirrors/an/anti-slop 点击查看 免费下载 开源维护者正被大量低质量 PR 淹没,其中不少是 AI 自动生…

📅 2026/10/26 1:49:07
cursor-free-vip 使用教程:三步重置 Cursor 机器 ID,恢复 AI 助手试用额度

cursor-free-vip 使用教程:三步重置 Cursor 机器 ID,恢复 AI 助手试用额度

cursor-free-vip 使用教程:三步重置 Cursor 机器 ID,恢复 AI 助手试用额度 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pr…

📅 2026/10/26 1:49:07
ComfyUI 中文工作流合集:18 个现成模板,十分钟跑通第一张图

ComfyUI 中文工作流合集:18 个现成模板,十分钟跑通第一张图

ComfyUI 中文工作流合集:18 个现成模板,十分钟跑通第一张图 【免费下载链接】ComfyUI-Workflows-ZHO 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-Workflows-ZHO Comf…

📅 2026/10/26 1:49:07
MORE NEWS

更多资讯

📰

微信社群机器人开发指南:从协议解析到企业微信实战

1. 微信社群机器人开发概述微信社群机器人是一种基于微信生态的自动化工具,能够帮助群主或管理员高效管理微信群。这类机器人通常具备自动回复、关键词触发、内容推送、数据统计等功能,广泛应用于电商客服、知识付费、社群运营等场景。在实际开发中&…

📰

金融AI安全治理:从成本中心到增长引擎的转型

1. 金融AI收入增长背后的安全治理逻辑金融行业正在经历一场由AI技术驱动的深刻变革。去年某国际银行通过AI风控系统将信贷审批效率提升40%,同时降低15%的坏账率——这个典型案例揭示了安全治理与AI创收的共生关系。当算法模型开始直接处理客户的资金流时&#xff0c…

📰

互联网医院解决方案:在线问诊系统与AI智慧分诊开发

1. 互联网医院解决方案概述互联网医院正在重塑传统医疗服务的交付模式。这套在线问诊系统源码AI智慧分诊APP开发方案,为医疗机构提供了从患者接入到诊疗服务的全流程数字化解决方案。核心价值在于通过技术手段突破时空限制,将三甲医院的优质医疗服务延伸…

📰

蒙特卡洛方法实战CartPole:从回报设计到策略改进的完整落地

CartPole 这个环境几乎是每个接触强化学习的人绕不开的第一道坎。倒立摆本身不复杂:一根杆子铰接在小车上,小车左右移动,目标是让杆子别倒。但真动手写代码的时候,很多人会卡在同一个地方——策略到底怎么评估?回报怎么…

📰

微信社群机器人开发指南:从技术选型到合规实践

1. 微信社群机器人开发概述微信社群机器人是一种基于微信生态的自动化工具,能够模拟人类在微信群中的交互行为,实现自动回复、消息管理、数据统计等功能。这类机器人通常通过微信官方接口或第三方技术方案实现,主要服务于社群运营、客户服务、…

📰

多模态大模型中的System 2认知架构与工程实践

1. 多模态大模型中的System 2认知架构解析当GPT-4V能够看着一张破损自行车图片说"需要更换链条"时,它真的理解机械原理吗?这触及了当前多模态大模型最关键的认知鸿沟——感知能力(System 1)与真实推理(Syste…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬