当前位置: 首页 > news >正文

Python 从入门到实战13(字符串简介)

·        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

      上篇文章我们通过举例学习了流程控制语句中的循环语句。今天继续讨论基本数据类型:字符串。

字符串是连续的字符序列,也是序列的一种。

1、字符串定义

字符串是一种序列,一般是双引号或者单引号括起来的元素序列。其中若使用’’ 单引号或者双引号””字符序列需要在同一行,若是使用’’’ ‘’’ 三引号可以分布在连续的多行。

举例说明:

#coding=utf-8
str1 = "我爱祖国!"
str2 = 'abcde'
str3 = '''我是男生,喜欢
打篮球。
'''
print(str1)
print(str2)
print(str3)

输出结果:

2、常见的转义字符

\     -------续行符

\n    -------换行符

\0    -------空

\t    --------水平制表符,用于横向跳到下一制表符

\”    --------双引号

\’    ---------单引号

\\    ---------一个反斜杠

\f    ---------换页

\0dd  ---------八进制数,dd代表字符

\xhh  ---------十六进制

3、字符串编码转换

最早的字符串编码是美国标准信息交换码,即ASSCII码。后面各国都需要编码,于是出现了GBK、GB2312、UTF-8编码等。GBK、GB2312是我国制定的中文编码标准,使用一个字节表示英文字母,两个字节表示中文字符。UTF-8是国际通用的编码,对全世界所有国家需要用到的字符都进行了编码,它采用一个字节表示英文字符,用3个字节表示中文。在python 3.x 中,默认采用UTF-8编码,这种编码避免了中文乱码问题的发生。

另外,在python 中有两种常用的字符串类型,如str、bytes。其中str表示Unicode 字符(ASSCII或者其他),bytes表示二进制数据。

注意:bytes 类型的数据是带有b前缀的字符串(使用单引号或者双引号表示)。如,b’\xd2\xb0’

和b’mr’都是bytes 类型的数据

1)使用encode()方法编码

使用encode()方法将str转化为二进制数据(bytes),这个过程也成为编码。

参考语法:str.encode([encoding=”utf-8”][,errors=”strict”])

说明:   str------表示要进行转换的字符串

         encoding=”utf-8”-------可选参数,指定的转换时需要采用的编码

          errors=”strict”-------可选参数,用于指定错误处理方式,其可选strict(遇到非法字符就抛出异常),ignore(忽略非法字符),replace(用“?“替代非法字符)

注意:使用encode()方法时不会修改原字符串。

举个小栗子:

str3 = '''我是男生,喜欢
打篮球。
'''
byte1 = str3.encode('GBK')
byte2 = str3.encode('utf-8')
print("原字符串为:",str3)
print("转换后的字符串:",byte1)
print("转换后的字符串:",byte2)

采用两种不同的编码方法输出的结果不同。

打印结果:

2)使用decode()方法解码

使用decode()方法用于将二进制数据转换为字符串。也称之为解码。

使用语法:   bytes.decode([encoding=”utf-8”][,errors=”strict”])

说明:   bytes ------表示要进行转换的二进制数据

        encoding=”utf-8”-----------可选参数,指定的转换时需要采用的编码

        errors=”strict”-------可选参数,用于指定错误处理方式,其可选strict(遇到非法字符就抛出异常),ignore(忽略非法字符),replace(用“?“替代非法字符)

注意:在指定解码采用的字符编码时,需要采用与编码时采用的字符编码一致。

我们举个例子:

str3 = '''我是男生,喜欢
打篮球。
'''
byte1 = str3.encode('GBK')
byte2 = str3.encode('utf-8')
print("原字符串为:",str3)
print("转换后的字符串:",byte1)
print("转换后的字符串:",byte2)
#解码:
str_new1 = byte1.decode("GBK")
str_new2 = byte2.decode("GBK")
print(str_new1)
print(str_new2)

由于上面黄色标识的部分解码和编码的格式不一样就会报错。

需改好正常执行:

4、字符串拼接

这个比较简单,直接使用+即可完成。

举个小栗子:

str1 = "我爱祖国!"
str2 = 'I am Dewi,'
str3 = '''我是男生,喜欢
打篮球。
'''
print(str1+ str2 +str3)

输出如下:

5、计算字符串的长度

由于不同的字符占字节数不同,因此要计算字符串的长度,需要先了解各个字符所占的字节数。一般数字、英文、小数点、下划线和空格占一个字节;一个汉字可能会占用2-4个字节,取决于采用的编码。

汉字在GBK/GB2312 占2个字节

汉字在UTF-8/Unicode 占3个或者4个字节

举例说明:

str1 = "我爱祖国!"
str2 = 'I am Dewi,'
str_add = str2 + str1
print(len(str_add))   #默认时计算,所有英文、数字、汉字、空格都是一个字符(占一个字节)
print(len(str_add.encode("utf-8")))#指定utf-8,汉字占3个字节,其它占一个字节,4*3+11
print(len(str_add.encode("GBK")))#指定GBK,汉字占2个字节,其它占一个字节,4*2+11

输出结果参考:

今天先写到这里了,每天进步一点点。今天也要加油啊!

相关文章:

Python 从入门到实战13(字符串简介)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了流程控制语句中的循环语句。今天继续讨…...

Redis_RDB持久化

基于RDB的持久化方式会把当前内存中所有的redis键值对数据以快照的方式写入硬盘文件中,如果需要恢复数据,就把快照文件读到内存中。 RDB快照文件是经压缩的二进制格式的文件,它的储存路径不仅可以在redis服务器启动前通过配置参数来设置&…...

SOP流程制定:vioovi ECRS工时分析软件的智慧引领

在现代制造业中,标准化操作流程(SOP)已成为提升生产效率、确保产品质量、降低运营成本的关键要素。SOP不仅为生产活动提供了明确的指导,还促进了企业管理的规范化和精细化。然而,如何科学、高效地制定SOP流程&#xff…...

并发编程-synchronized解决原子性问题

并发编程-synchronized解决原子性问题 文章目录 并发编程-synchronized解决原子性问题零、说在前面一、线程安全问题1.1 什么是线程安全问题1.2 自增运算不是线程安全的1.3 临界区资源与临界区代码段 二、synchronized 关键字的使用2.1 synchronized 关键字作用2.2 synchronize…...

CSS之我不会

非常推荐html-css学习视频&#xff1a;尚硅谷html-css 一、选择器 作用&#xff1a;选择页面上的某一个后者某一类元素 基本选择器 1.标签选择器 格式&#xff1a;标签{} <h1>666</h1><style>h1{css语法} </style>2.类选择器 格式&#xff1a;.类…...

AI绘画:SD打光神器!(Stable Diffusion进阶篇:Imposing Consistent Light)

前言 在上一篇笔记中学习了如何简单地下载以及使用IC-Light&#xff0c;今天的内容会稍微有点不一样。 对于学过stable diffusion的小伙伴来说&#xff0c;forge UI和Comfy UI会更加熟悉一些。在IC-Light发布后&#xff0c;Openpose editor的开发者将其制作成了一个Forge UI上…...

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期] 第二期介绍&#xff1a;频道模块之频道管理 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]第二期介绍&#xff1a;频道模块之频道管理获取用户详情获取用户频道列表获取频道详情获取子频道列表获…...

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

关联比赛: 2021第二届云原生编程挑战赛2&#xff1a;实现一个柔性集群调度机制 参赛心得 历时快两个月的第二届云原生编程挑战赛结束了&#xff0c;作为第一次参赛的萌新&#xff0c;拿下了28名的成绩&#xff0c;与第一名差了19万分&#xff0c;因为赛制时间太长&#xff0c…...

具体函数的卡诺图填入

目录 用卡诺图表示逻辑函数 基本步骤 例子1 例子2 例子3 用卡诺图表示逻辑函数 基本步骤 例子1 由真值表得卡诺图。 在函数值为1的地方在卡诺图上画上1。 例子2 例子3 非标准与或式&#xff0c;要找到公共部分。 将AB所在的那一行填上1。 将A非D的那个部分也填上1。 再…...

STM32 HAL freertos零基础(六)计数型信号量

1、计数型信号量 计数型信号量(Counting Semaphore)是另一种类型的信号量,它可以保持一个大于等于0的整数值,这个值表示可用资源的数量。本质上相当于队列长度大于1得队列。经典问题就是剩余车辆统计,出入车辆,车辆数据可以实时更新。 2、相关API函数 xSemaphoreCreat…...

Dynamics CRM Ribbon Workbench-the solution contains non-entity components

今天在一个低版本的环境里准备用Ribbon Workbench去编辑一个按钮时&#xff0c;遇到了如下错误 一开始没当回事&#xff0c;以为是我的解决方案问题&#xff0c;去检查了下&#xff0c;只有一个组件&#xff0c;并且哪怕我把组件换成了某个实体也不行&#xff0c;尝试了其他任何…...

谷歌对抗司法部:为什么谷歌的“数百个竞争对手”说法站不住脚

随着谷歌反垄断陪审团审判的进行&#xff0c;谷歌声称美国司法部对广告技术市场的看法狭隘&#xff0c;并且广告商和出版商有很多替代选择。然而&#xff0c;证据并不支持这一说法。 谷歌误导性地声称有“数百个竞争对手。” 虽然存在许多广告技术提供商&#xff0c;但谷歌在…...

重生奇迹MU 沉迷升级的快感 法魔升级机器人

重生奇迹MU是一款以升级为主要玩法的游戏。升级是游戏基础&#xff0c;也是最重要的部分。通过升级&#xff0c;玩家可以获得更多的基础属性奖励和自由点数奖励&#xff0c;同时还能够穿戴最好的装备和翅膀。因此&#xff0c;升级在游戏中具有极其重要的地位。 史上升级最快的…...

从地图到智能地图:空间索引技术如何改变我们的世界

图源&#xff1a;WL 为什么空间索引很有用? 在处理地理空间数据时&#xff0c;空间索引是一个至关重要的功能&#xff0c;它决定了我们如何高效地从海量的地理数据中检索出所需的信息。想象一下&#xff0c;如果你正在处理一个包含数千万乃至数亿条记录的数据库&#xff0c;…...

深入理解AI Agent架构,史上最全解析!赶紧码住!

AI Agent框架&#xff08;LLM Agent&#xff09;&#xff1a;LLM驱动的智能体如何引领行业变革&#xff0c;应用探索与未来展望 1. AI Agent&#xff08;LLM Agent&#xff09;介绍 1.1. 术语 Agent&#xff1a;“代理” 通常是指有意行动的表现。在哲学领域&#xff0c;Agen…...

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后&#xff0c;苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本&#xff0c;iOS 18 RC 的内部版本号为22A3354&#xff0c;本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中&#xff0c;苹果给我们带来了 Apple Intelligence&#xff0c;这…...

CAN集线器(工业级、隔离式)

型号&#xff1a; MS-HUB-C 概述 MS-HUB 是一款可通过一路 CAN &#xff0c;一路 RS-232为主口扩展出 7 路 CAN 从口的工业级光电隔离型 CAN 分配器。可以有效的实现 CAN 网络的中继、扩展与隔离。采用先进的自动流控技术自动侦测CAN 信号流向。MS-HUB 具备光电隔离功能&#x…...

代码随想录训练营 Day57打卡 图论part07 53. 寻宝(prim,kruskal算法)

代码随想录训练营 Day57打卡 图论part07 卡码53. 寻宝 题目描述 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&#xff0c;每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路&#xff0c;方便运输。 不同岛屿之间&#xff0c;路途距离不同&#xff0c;…...

Hibernate QueryPlanCache 查询计划缓存引发的内存溢出

目录 1.排查方式2.结论3.解决办法 前言&#xff1a;在生产环境中有一个后端程序多次报oom然后导致程序中断。 1.排查方式 通过下载后端程序产生的oom文件&#xff0c;将oom文件导入MemoryAnalyzer程序分析程序堆内存使用情况。 1、将oom文件导入MemoryAnalyzer后可以看到概览信…...

前端开发的观察者模式

什么是观察者设计模式 观察者模式&#xff08;Observer Pattern&#xff09;是前端开发中常用的一种设计模式。它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生改变时&#xff0c;其所有依赖对象都能收到通知并自动更新。观察者模式广泛应用于事件驱动的系…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...