Python标准数据类型-String(字符串)

news2025/1/18 3:31:08

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1
📃个人主页:hacker707的csdn博客
🔥系列专栏:零基础入门篇
💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人生,我自己书写,余生很长,请多关照,我的人生,敬请期待

在这里插入图片描述

Python字符串最强学习宝典

  • ✨字符串简介
  • ✨字符串编码转换
    • 使用`encode()`方法解码
    • 使用decode()方法解码
  • ✨字符串运算符
  • ✨格式化输出
    • 使用`%`操作符
    • 使用字符串对象的`format()`方法(推荐使用)
  • ✨截取字符串(索引和切片)
  • 结束语🥇

✨字符串简介

在Python程序中,字符串类型'str'是最常用的数据类型。
可以使用单引号'' 双引号"" 三引号''''''来创建字符串。(单引号,双引号创建的字符串只能在一行,三引号创建的字符串可以分布在多行)
创建字符串的方法很简单,只需要为变量分配一个值即可

demo = 'hello'  # 用单引号创建字符串
demo1 = "world"  # 用双引号创建字符串
demo2 = '''Life is short 
I use Python
'''  # 用三引号创建字符串
print(demo)
print(demo1)
print(demo2)

运行结果如下

在这里插入图片描述

✨字符串编码转换

  • 最早出现的字符串编码是美国标准信息交换码(ASCLL码)ASCLL码最多只能表示256个字符,每个字符占一个字节
  • 随着信息技术的快速发展,各国的文字都需要进行编码,于是出现了GBKGB2312UTF-8等。
  • GBK、GB2312是我国指定的中文编码标准(使用1个字节表示英文字母,2个字节表示中文字符)
  • UTF-8是国际通用的编码,对全世界所有国家使用的字符进行编码(使用1个字节表示英文字母,3个字节表示中文字符)
  • 在Python3.x中,默认采用的编码格式为UTF-8,采用这种编码格式能有效解决中文乱码问题

在python中,有两种常见的字符串类型,分别是strbytes

  • str表示Unicode字符(ASCLL或其他)
  • bytes表示二进制数据(包括编码的文本)
    这两种类型的字符串不能拼接在一起使用
    通常情况下,str在内存中以Unicode表示(一个字符对应若干个字节)但如果在网络中传输,或者保存到磁盘上,就需要把str转换为字节(byte)类型

str和bytes之间可以通过encode()decode()方法进行转换

使用encode()方法解码

encode方法为str对象的方法,用于将字符串转换为二进制数据(bytes),也称为编码。

其语法格式为:str.encode(encoding="utf-8", errors="strict")

参数说明如下:

  • str:表示要转换的字符串
  • encoding="utf-8":可选参数,用于置顶进行转码时采用的字符编码,默认为utf-8,也可以设置为GB2312、GBK。当只有一个参数时,也可以省略encoding=,直接写编码
  • errors="strict":可选参数,用于指定错误处理方式,默认为strict(遇到非法字符就抛出异常),也可以设置为ignore(忽略非法字符)replace(用"?"替换非法字符)xmlcharrfreplace(使用XML的字符串引用)等

注意事项

在使用encode()方法时,不会修改原字符串,如果打印原字符串会恢复原状。

实例:定义一个名为demo的字符串,内容为"但行好事莫问前程",然后使用encode()方法将其采用UTF-8编码转换为二进制数据,并输出原字符串内容和转换后的内容

demo = "但行好事莫问前程"
res = demo.encode("UTF-8")
print("原字符串:" + demo)
print("转换后的二进制数据:", res)

运行结果如下

在这里插入图片描述

使用decode()方法解码

decode()方法为bytes对象的方法,用于将二进制数据转换为字符串,即将使用encode()方法转换的结果再转换为字符串就是解码。

其语法格式为bytes.decode(encoding="utf-8", errors="strict")

参数说明如下:

  • bytes:表示要进行转换的二进制数据,通常是encode()方法转换的结果。
  • encoding="utf-8":可选参数,用于置顶进行转码时采用的字符编码,默认为utf-8,也可以设置为GB2312、GBK。当只有一个参数时,也可以省略encoding=,直接写编码
  • errors="strict":可选参数,用于指定错误处理方式,默认为strict(遇到非法字符就抛出异常),也可以设置为ignore(忽略非法字符)replace(用"?"替换非法字符)xmlcharrfreplace(使用XML的字符串引用)等。

注意事项

  • 在设置解码采用的字符编码时,需要与编码时采用的字符编码一致。
  • 在使用decode()方法时,不会修改原字符串,如果打印原字符串会恢复原状。

实例:将上方实例encode()编码后的二进制数据进行解码,输出原字符串内容、编码后的内容、解码后的内容。

demo = "但行好事莫问前程"
res = demo.encode("UTF-8")
res1 = res.decode("UTF-8")
print("原字符串:" + demo)
print("编码后的二进制数据:", res)
print("解码后的字符串数据:" + res1)

运行结果如下

在这里插入图片描述

✨字符串运算符

操作符描述
+连接字符串
*重复输出字符串
[]通过索引获取字符串中的字符
[:]截取字符串一部分,遵循左闭右开原则
in成员运算符(如果字符串中包含指定的字符返回true)
not in成员运算符(如果字符串中不包含指定的字符返回true)
r/R原始字符串(所有字符串都是直接使用,没有转义或不能打印的字符)
%格式化字符
  • 重复输出字符串*
demo = "Hacker"
print(demo * 7)

在这里插入图片描述

  • 成员运算符in
demo = "Hacker"
if "H" in demo:
    print("H在变量demo里")

在这里插入图片描述

  • 成员运算符not in
demo = "Hacker"
if "Q" not in demo:
    print("Q不在变量demo里")

在这里插入图片描述

  • 原始字符串r/R
print(r"\n")
print(R"\t")

在这里插入图片描述

✨格式化输出

使用%操作符

常用的格式化字符见下表

格式化字符说明
%s字符串
%c单个字符
%d十进制整数
%x十六进制整数
%f浮点数
%o八进制整数

实例

# 字符串
print("hacker%s" % "嘎嘎宠粉")
# 数字
print("今天走了%d步" % 777)

在这里插入图片描述

注意事项

  • 由于使用%操作符进行格式化是早期python中提供的方法,在python2.6版本开始,字符串对象提供了format()方法对字符串进行格式化
  • 使用%操作符进行格式化仅了解即可,推荐使用format()方法

使用字符串对象的format()方法(推荐使用)

字符串对象提供了format()方法用于字符串格式化
format()方法语法格式:str.format(args)

参数说明如下:

  • str:用于指定字符串的显示格式(即模板)
  • args:用于指定要转换的项(如果有多项,用逗号隔开)

下面重点介绍创建模板。在创建模板时,需要使用"{}“和”:"指定占位符
创建模板语法格式:{ [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }

参数说明如下:

  • index:可选参数,指定后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。
  • fill:可选参数,指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。
  • align:可选参数,指定数据的对齐方式,具体的对齐方式见下表所示
align含义
<数据左对齐
>数据右对齐
=数据右对齐,只对数字类型有效,将数字放在填充字符的最左侧
^数据居中,此项需和width参数一起使用
  • sign:可选参数,用于指定有无符号数,此参数值以及对应含义见下表所示
sign含义
+正数前加正号,负数前加负号
-正数前不加正号,负数前加负号
空格正数前加空格,负数前加负号
#对于二进制数、八进制数和十六进制数,如果加上#,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀
  • width:可选参数,指定输出数据时所占的宽度。
  • precision:可选参数,指定保留的小数位数。
  • type:可选参数,用于指定类型

format()方法中常用的格式化字符见下表所示

格式化字符说明
s对字符串类型格式化
d十进制整数
c将十进制整数自动转换成对应的 Unicode 字符
e 或者 E转换为科学计数法后,再格式化输出
g 或 G自动在e和f(或E和F)中切换
b将十进制数自动转换成二进制表示,再格式化输出
o将十进制数自动转换成八进制表示,再格式化输出
x或X将十进制数自动转换成十六进制表示,再格式化输出
f或F转换为浮点数(默认小数点后保留6位),再格式化输出
%显示百分比(默认显示小数点后6位

在Python中,可以使用字符串中的format()方法来格式化字符串。format()方法可以将一个或者多个参数动态的插入到格式化字符串中。
实例一:使用format()和使用f.string

name = "hacker"
age = 20
res = "My name is {}, I am {} years old.".format(name, age)
print(res)

在上面的代码中,我们定义了一个字符串res使用了两个占位符{},然后调用format()方法将nameage两个参数传入。输出结果如下:

在这里插入图片描述
我们还可以使用大括号{}中的数字来指定参数的位置:

name = "hacker"
age = 20
res = "My name is {0}, I am {1} years old.".format(name, age)
print(res)

{0}中的0代表传入的第一个参数name,在{1}中的1代表传入的第二个参数age,输出结果如下:

在这里插入图片描述
除了使用.format()以外,还可以使用f.string来进行更简洁,易读的输出

name = "hacker"
age = 20
print(f"My name is {name} and I am {age} years old.")

在这里插入图片描述

实例二:打印Python官网地址

demo = "网站名称:{:s}\n网址:{:s}"
print(demo.format("Python官网", "https://www.python.org/"))

运行结果如下

在这里插入图片描述

实例三:在实际开发过程中,很多时候需要处理数据,可以使用format()方法对数值类型进行不同的输出(例如:货币形式、百分比形式、进制转换形式等)

# 导入python数学模块math
import math

# 以货币形式显示
print("货币形式:{:,d}".format(1000))
# 科学计数法表示
print("科学计数法:{:E}".format(100))
# 以十六进制表示
print("100的十六进制:{:#x}".format(100))
# 输出百分比形式
print("0.77的百分比:{:.0%}".format(0.77))
# 兀取7位小数表示
print("兀取7位小数:{:.7f}".format(math.pi))

运行结果如下

在这里插入图片描述

✨截取字符串(索引和切片)

由于字符串也属于序列,所以要截取字符串,可以采用切片方法实现
通过切片方法截取字符串的语法格式:string(start:end:step)

参数说明如下:

  • string:要截取的字符串
  • start:要截取的第一个字符索引(包括该字符),如果不指定默认为0
  • end:要截取的最后一个字符索引(不包括该字符),如果不指定默认为字符串的长度
  • step:切片的步长(如果省略默认为1,当忽略步长时,最后一个冒号也可以省略)

实例:定义一个字符串,利用切片方法截取不同长度的子字符串

demo = "但行好事莫问前程!"
res1 = demo[1]  # 截取第二个字符
res2 = demo[5:]  # 从第6个字符开始截取
res3 = demo[:4]  # 从左边开始截取4个字符
res4 = demo[2:4]  # 截取第3个到第4个字符
print("原字符串:" + demo)
print(res1 + "\n" + res2 + "\n" + res3 + "\n" + res4 + "\n")

运行结果如下

在这里插入图片描述
注意事项
在进行字符串截取时,如果指定的索引不存在,就会抛出异常
IndexError: string index out of range:超出字符串索引范围

在这里插入图片描述

这时我们可以使用try...except语句去捕获异常(关于异常处理的讲解后面的文章里会讲到)

demo = "但行好事莫问前程!"
try:
    res1 = demo[10]  
except IndexError:
    print("索引不存在")

这时再运行,即使超出范围也不会抛异常

在这里插入图片描述

结束语🥇

以上就是Python基础入门篇之Python标准数据类型-String(字符串)

  • 欢迎大家订阅系列专栏:Python零基础入门篇🥇
  • 此专栏内容会持续更新直到完结为止(如有任何纰漏请在评论区留言或者私信)

感谢大家一直以来对hacker的支持
你们的支持就是博主无尽创作的动力💖💖💖

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/473950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB符号运算(七)

目录 1、实验目的&#xff1a; 2、实验内容&#xff1a; 1、实验目的&#xff1a; 1&#xff09;掌握定义符号对象和创建符号表达式的方法&#xff1b; 2&#xff09;掌握符号运算基本命令和规则&#xff1b; 3&#xff09;掌握符号表达式的运算法则以及符号矩阵运算&#xf…

大型Saas系统的权限体系设计(二)

X0 上期回顾 上文《大型Saas系统的权限体系设计(一)》提到2B的Saas系统的多层次权限体系设计的难题&#xff0c;即平台、平台的客户、客户的客户&#xff0c;乃至客户的客户的客户如何授权&#xff0c;这个可以通过“权限-角色-岗位”三级结构来实现。 但这个只是功能权限&am…

mac免费杀毒软件哪个好用?如何清理mac系统需要垃圾

CleanMyMac x是一款功能强大的Mac系统优化清理工具&#xff0c;使用旨在帮助用户更加方便的清理您系统中的所有垃圾&#xff0c;从而加快电脑运行速度&#xff0c;保持最佳性能&#xff0c;更加稳定、流畅、快速&#xff01;&#xff01;&#xff01; CleanMyMac X无疑是目前m…

C++内存管理基础

文章目录 前言1. C/C内存分布2. C语言中动态内存管理方式3. C中动态内存管理3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. operator new与operator delete函数4.1 operator new与operator delete函数&#xff08;重点&#xff09; 5. new和delete的实现原理5.1…

hana odata batch

sap 博客有写 odata batch 处理前&#xff0c;先看一张图 In this blog post,we are going to see how to send a Odata Batch Request to the SAP Cloud for Customer system using POSTMAN Tool. Answers to expect from this post? How to use batch request in the POS…

『python爬虫』04. 爬虫需要知道的HTTP协议知识(保姆级图文)

目录 1. HTTP协议是什么&#xff1f;2. HTTP协议结构3. 爬⾍需要的请求头和响应头内容总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. HTTP协议是什么&#xff1f; HTTP协议, Hyper Text Transfer Protocol…

2023独立站能不能做FP?看完这篇你就懂了

现在已经快2023年中了&#xff0c;2023年已经过去了1/3&#xff0c;但还是有人在问特货产品能不能做独立站&#xff0c;还是有不少人在观望。心动不如行动啊朋友们&#xff01;要是想在跨境独立站做出一番事业来&#xff0c;建议现在立马行动起来&#xff0c;趁早在FP独立站领域…

工厂能耗管理系统linux嵌入式边缘网关

随着工业智能化进程的不断推进&#xff0c;能源能耗管理已成为企业经营中一个重要的环节。而在能源能耗管理场景下&#xff0c;边缘计算机发挥了越来越重要的角色。本文将介绍边缘计算机的功能特点、能源能耗使用对接的设备以及应用前景市场容量&#xff0c;并探讨ARM边缘计算机…

Java使用 Scanner连续输入int, String 异常错误输出原因分析

目录 一、Scanner常用语法 1、sc.nextInt()介绍 2、sc.next()介绍 3、sc.nextLine()介绍 4、sc.hasNext()介绍 二、报错案例 1、使用next()来接收带有空格的字符串会输出异常 2、先输入数字再输入字符串的输出异常 一、Scanner常用语法 Scanner sc new Scanner(System.…

STM32物联网实战开发(2)——回调函数

在第一篇博客中提到了全新的程序框架&#xff0c;我们会大量的使用回调函数&#xff0c;其中包括枚举类型、结构体、函数指针的应用。 回调函数&#xff1a;就是一个通过函数指针调用的函数。如果你把函数的地址传递给中间函数的形参&#xff0c;中间函数通过函数指针调用其所…

【VM服务管家】VM4.0软件使用_1.3全局模块类

目录 1.3.1 通讯管理&#xff1a;通讯管理的心跳管理功能的使用方法1.3.2 全局触发&#xff1a;使用全局触发功能执行流程的方法1.3.3 全局变量&#xff1a;全局变量关联流程中具体模块结果的方法1.3.4 全局脚本&#xff1a;方案加载完成信号发给通信设备的方法1.3.5 全局脚本&…

我做了个GPT3键盘,用了两个月发现它有点傻

自 ChatGPT 出世&#xff0c;各类文本类AI产品层出不穷。甚至接连几日&#xff0c;Producthunt 上新品过半都是AI相关。 这其中部分原因是 OpenAI 公司开放的 GPT3 1API 接口十分易用。只要一个简单的文本请求&#xff0c;就能将现有产品加入AI功能。例如&#xff0c;Notion、…

Docker在Windows系统中的安装方法和使用方法

Docker在Windows系统中的安装方法和使用方法 Docker是一种容器化技术&#xff0c;可以让开发者将应用程序和其依赖项打包成一个可移植的容器&#xff0c;从而实现快速部署和运行。在Windows系统中&#xff0c;Docker可以通过以下步骤进行安装和使用。 优点&#xff1a; Dock…

【VM服务管家】VM4.x算子SDK开发_3.3 模块工具类

目录 3.3.1 位置修正&#xff1a;位置修正算子工具的使用方法3.3.2 模板保存&#xff1a;实现模板自动加载的方法3.3.3 模板匹配&#xff1a; 获取模板匹配框和轮廓点的方法3.3.4 模板训练&#xff1a;模板训练执行完成的判断方法3.3.5 图像相减&#xff1a;算子SDK开发图像相减…

浅谈软件质量与度量

本文从研发角度探讨下高质量软件应具备哪些特点&#xff0c;以及如何度量软件质量。 软件质量的分类 软件质量通常可以分为&#xff1a;内部质量和外部质量。 内部质量 内部质量是指软件的结构和代码质量&#xff0c;以及其是否适合维护、扩展和重构。它关注的是软件本身的…

数据结构 | 常见的数据结构是怎样的?

本文简单总结数据结构的概念及常见的数据结构种类 1’ 2。 更新&#xff1a;2023 / 04 / 05 数据结构 | 常见的数据结构是怎样的&#xff1f; 总览概念分类 常用的数据结构数组链表跳表栈队列树二叉树完全二叉树、满二叉树 平衡二叉树单旋转左旋右旋 红黑树红黑树 V.S 平衡二叉…

2 天:我用文字 AI-ChatGPT 写了绘画 AI-Stable Diffusion 跨平台绘画应用

文本 AI - ChatGPT 和绘画 AI - Stable Diffusion&#xff0c;平地惊雷&#xff0c;突然进入寻常百姓家。 如果时间可以快进&#xff0c;未来的人们对于我们这段时光的历史评价&#xff0c;大概会说&#xff1a; 当时的人们在短时间连续经历了这几种情感。从不信&#xff0c;…

java多线程BlockingDeque的三种线程安全正确退出方法

本文介绍两种BlockingDeque在多线程任务处理时正确结束的方法 一般最开始简单的多线程处理任务过程 把总任务放入BlockingDeque创建多个线程&#xff0c;每个线程内逻辑时&#xff0c;判断BlockingDeque任务是否处理完&#xff0c;处理完退出&#xff0c;还有任务就BlockingDe…

对顶堆模板!!【DS对顶堆】ABC281 E - Least Elements

我想的思路和正解是差不多的 就是滑动窗口&#xff0c;每过去一个用DS维护一下前k个元素和sum 本来想的是用优先队列维护前k个 然后想着multiset维护前k个&#xff0c;但是具体不知道怎么操作 这里用的是multiset维护对顶堆 关于对顶堆&#xff0c;我在寒假的时候总结过 …

【Java笔试强训】(1)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f9be;&#x1f9be;&#x1f9be; 目录 一、选择题 二、编程题 &#x1f525;组队竞…