Chapter 10 Python数据容器:字符串

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!

文章目录

  • 前言
  • 一、字符串的定义
  • 二、字符串的下标索引
  • 三、字符串的常用操作(方法)
  • 四、字符串的遍历


前言

在 Python 中,数据容器是组织和管理数据的重要工具,字符串作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了字符串的定义、下标索引、常用操作以及遍历方法。


本篇文章参考:黑马程序员

一、字符串的定义

字符串是字符的容器,一个字符串可以存放任意数量的字符。每个字符都可以被视为字符串的一个元素。
①定义方式:
方式一:双引号定义法

text1="我是字符串文本数据"
print(text1)

输出结果:
我是字符串文本数据

方式二:单引号定义法

text2='我也是字符串文本数据'
print(text2)

输出结果:
我也是字符串文本数据

方式三:三引号定义法
表示在一对三个双引号的范围内均是字符串。与多行注释的写法一样,同样支持换行操作,使用变量接收它,它就是字符串,不使用变量接收它,就可以作为多行注释使用。

text3="""我也是字符串文本数据"""
text4="""
在三个引号的包围圈内
全部都是
字符串文本数据
"""
print(text3)
print(text4)

输出结果:
我也是字符串文本数据
在三个引号的包围圈内
全部都是
字符串文本数据

②特点:

  • 只可存储字符串
  • 长度任意(取决于内存大小)
  • 不可修改(增加或删除元素等)
  • 允许重复字符串存在
  • 支持下标索引
  • 支持循环

③字符串和列表、元组的区别:

  • 不同于列表不同于元组的在于:
    字符串容器可以容纳的类型是单一的,只能是字符串类型
  • 不同于列表相同于元组的在于:
    字符串不可修改

二、字符串的下标索引

在 Python 中,字符串和其它容器(如列表、元组)一样,也可通过下标进行访问。

注意:字符串中的每个字符(包括字母、数字、标点符号以及空格)都被视为单独的元素。

①基本语法:
字符串[标号]

②索引范围:
如下图,字符串中的每一个元素,都有其位置下标索引。我们只需要按照下标索引,即可取得对应位置的元素。
正向的下标索引:从前向后的方向,从0开始,依次递增(0、1、2……)。
在这里插入图片描述

注意:下标索引的取值不能超出取值范围,否则无法取出元素并且会报错。

#通过下标索引取值
my_str="Hello Python"
value1=my_str[2]
print(f"从字符串{my_str}取下标为2的元素,结果为{value1}")
# 错误示范:报错IndexError: string index out of range
# value=my_str[16]

输出结果:
从字符串Hello Python取下标为2的元素,结果为l

反向的下标索引:从后向前:从-1开始,依次递减(-1、-2、-3…)。
在这里插入图片描述

my_str="Hello Python"
value2=my_str[-10]
print(f"从字符串{my_str}取下标为-10的元素,结果为{value2}")

输出结果:
从字符串Hello Python取下标为-10的元素,结果为l

三、字符串的常用操作(方法)

字符串的常用方法:
在这里插入图片描述

①查找元素下标:
查找指定元素在字符串的下标,如果找不到,则报错ValueError。
语法:字符串.index(字符串)

# index方法
my_str="Hello Python"
value=my_str.index("Python")
print(f"从字符串{my_str}中查找Python,其起始下标为{value}")
# 错误示范:会报错 ValueError: substring not found
# value=my_str.index("a")

输出结果:
在从字符串Hello Python中查找Python,其起始下标为6

②统计元素个数:
方式一:统计字符串中某元素的出现次数
语法:字符串.count(字符串)

# count统计方法
my_str="Hello Python"
num=my_str.count("o")
print(f"字符串{my_str}中o的数量为{num}")

输出结果:
字符串Hello Python中o的数量为2

方式二:统计字符串的长度
语法:len(字符串)

# len函数统计字符串长度
my_str="Hello Python"
num= len(my_str)
print(f"字符串{my_str}的长度为{num}")

输出结果:
字符串Hello Python的长度为12

③字符串的替换:
语法:字符串.replace(字符串1,字符串2)
注意:不是修改字符串本身,而是得到了一个新字符串

# replace方法
my_str="Hello Python"
new_my_str=my_str.replace("Hello","Hi")
print(f"将字符串{my_str}进行替换后得到{new_my_str}")

输出结果:
将字符串Hello Python进行替换后得到Hi Python

可以看到,字符串my_str本身并没有发生变化,而是得到了一个新字符串对象new_my_str。

④字符串的分割:
按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。
语法:字符串.split(分隔符字符串)
注意:字符串本身不变,而是得到了一个列表对象

# split方法
my_str="Hello Python Hello World"
# 按照空格进行切分
new_str_list=my_str.split(" ")
print(f"将字符串{my_str}进行切分后得到{new_str_list},类型是{type(new_str_list)}")

输出结果:
将字符串Hello Python Hello World进行切分后得到[‘Hello’, ‘Python’, ‘Hello’, ‘World’],类型是<class ‘list’>

可以看到,字符串按照给定的 “空格”进行了分割,变成多个子字符串,并存入一个列表对象中。

⑤字符串的规整操作:
方式一:去除前后空格:
语法:字符串.strip()

# strip方法
my_str="   Hello Python Hello World   "
# 不传入参数,去除首尾空格
new_my_str=my_str.strip()
print(f"字符串{my_str}被strip后,结果为{new_my_str}")

输出结果:
字符串  Hello Python Hello World  被strip后,结果为Hello Python Hello World

方式二:去除前后指定字符串
语法:字符串.strip(字符串)

my_str="134Hello Python Hello World431"
new_my_str=my_str.strip("134")
print(f"字符串{my_str}被strip后,结果为{new_my_str}")

输出结果:
字符串134Hello Python Hello World431被strip后,结果为Hello Python Hello World

注意:传入的字符串“134” 其实就是传入字符“1”、“3”和“4”,strip() 方法会分别检查字符串的开头和结尾,并按照单个字符“1”、“3”和“4”去除指定字符,所以开头的“134”以及结尾的的“431”都会被去除。

四、字符串的遍历

①while循坏遍历:
定义一个变量表示下标,从0开始。
循环条件为:下标值 < 元组的元素数量

基本语法:
index = 0
while index < len(字符串):
  元素 = 字符串[index]
  对元素进行处理
  index += 1

#字符串的遍历:while
my_str="Hello Python"
index=0
while index<len(my_str):element=my_str[index]print(element,end='')index+=1

输出结果:
Hello Python

②for循坏遍历:
从容器内,依次取出元素并赋值到临时变量上。在每一次的循环中,我们可以对临时变量(元素)进行处理。

基本语法:
for 临时变量 in 数据容器:
  对临时变量进行处理

#字符串的遍历:for
my_str="Hello Python"
for element in my_str:print(element,end='')

输出结果:
Hello Python

for循环和while循坏遍历对比:

  • for循环更简单,while更灵活
  • for循环适用于,遍历数据容器的场景或简单的固定次数循环场景;while循环适用于任何想要循环的场景

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

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

相关文章

NC 二叉树的最大深度

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 求给定二叉树…

com.mysql.cj.jdbc.Driver 爆红

出现这样的问题就是pom.xml文件中没有添加数据库依赖坐标 添加上这个依赖即可&#xff0c;添加完后重新加载一下Maven即可。 如果感觉对你有用就点个赞&#xff01;&#xff01;&#xff01;

加密货币换法拉利!BTC和ETH可买超跑,满足加密富豪需求!未来继续扩张全球市场!

全球知名的意大利豪华跑车制造商法拉利&#xff08;Ferrari&#xff09;正在跟随时代潮流&#xff0c;加速在全球范围内推广其加密货币支付系统。这一举措旨在进一步满足加密货币持有者对奢侈品的需求&#xff0c;并拥抱日益普及的数字资产。 2023年10月&#xff0c;法拉利在美…

一文掌握YOLOv1-v10

引言 YOLO目标检测算法&#xff0c;不过多介绍&#xff0c;是基于深度学习的目标检测算法中最出名、发展最好的检测器&#xff0c;没有之一。本文简要的介绍一下从YOLOv1-YOLOv10的演化过程&#xff0c;详细技术细节不过多介绍&#xff0c;只提及改进点&#xff0c;适合初学者…

美团大众点评字符验证码

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(…

昇思MindSpore学习入门-高阶自动微分

mindspore.ops模块提供的grad和value_and_grad接口可以生成网络模型的梯度。grad计算网络梯度&#xff0c;value_and_grad同时计算网络的正向输出和梯度。本文主要介绍如何使用grad接口的主要功能&#xff0c;包括一阶、二阶求导&#xff0c;单独对输入或网络权重求导&#xff…

宠物空气净化器是不是智商税?央视推荐狗毛空气净化器分享

宠物空气净化器是不是智商税&#xff1f;是众多宠物主人在考虑是否购置宠物空气净化器时心中最大的疑问。作为呼吸科医生&#xff0c;我建议&#xff0c;在保护呼吸健康方面&#xff0c;任何投资都是值得的。特别是对于养有猫狗的家庭来说&#xff0c;宠物所带来的各种污染物和…

一次性解决 | 网站被提示“不安全 ”

当网站被提示“不安全”时&#xff0c;这通常意味着用户的个人信息、登录凭证和其他敏感数据可能面临风险。为了一次性解决这个问题&#xff0c;可以从一下方面入手。 一、检查并启用HTTPS协议 检查URL&#xff1a;确保网站地址以“https://”开头&#xff0c;而非“http://”…

HTML常见标签——超链接a标签

一、a标签简介 二、a标签属性 href属性 target属性 三、a标签的作用 利用a标签进行页面跳转 利用a标签返回页面顶部以及跳转页面指定区域 利用a标签实现文件下载 一、a标签简介 <a>标签用于做跳转、导航&#xff0c;是双标签&#xff0c;记作<a></a>&#…

【Linux C | 网络编程】进程池小文件传输的实现详解(二)

上一篇实现了一个最基本的进程池&#xff1a;客户端读取标准输入&#xff0c;发送给服务端&#xff0c;服务端回复一个相同的内容。 【Linux C | 网络编程】简易进程池的实现详解&#xff08;一&#xff09; 这篇内容在上篇进程池的基础上实现小文件的传输。 文件传输的本质…

Java 并发编程:一文了解 Java 内存模型(处理器优化、指令重排序与内存屏障的深层解析)

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 022 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

力扣高频SQL 50 题(基础版)第三题

文章目录 力扣高频SQL 50 题&#xff08;基础版&#xff09;第三题1148.文章浏览题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50 题&#xff08;基础版&#xff09;第三题 1148.文章浏览 题目说明 Views 表&#xff1a; ---------------------- | Colu…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;易开发表现为API友好、调试难度低&#xff1b;高效执行包括计算效率、数据预处理效率和分布式训练效率&#xff1b;全场景则指框架同时支持云、边…

数据传输安全--SSL VPN

目录 IPSEC在Client to LAN场景下比较吃力的表现 SSL VPV SSL VPN优势 SSL协议 SSL所在层次 SSL工作原理 SSL握手协议、SSL密码变化协议、SSL警告协议三个协议作用 工作过程 1、进行TCP三次握手、建立网络连接会话 2、客户端先发送Client HELLO包&#xff0c;下图是包…

平安养老险深圳分公司:参加献血志愿者活动,点亮生命之光

7月23日&#xff0c;“热血传万里&#xff0c;家家共平安”2024年中国平安无偿献血志愿者活动启动&#xff0c;其深圳站活动于当日在深圳市福田区平安金融中心北广场举行&#xff0c;平安养老险深圳分公司积极响应活动号召参与献血&#xff0c;用行动诠释责任&#xff0c;以爱心…

Nginx 配置与优化:常见问题全面解析

文章目录 Nginx 配置与优化:常见问题全面解析一、Nginx 安装与配置问题1.1 Nginx 安装失败问题描述解决方法1.2 Nginx 配置文件语法错误问题描述解决方法二、Nginx 服务启动与停止问题2.1 Nginx 无法启动问题描述解决方法2.2 Nginx 服务无法停止问题描述解决方法三、Nginx 性能…

[Mysql-DDL数据操作语句]

目录 DDL语句操作数据库 库&#xff1a; 查看&#xff1a;show 创建&#xff1a;creat 删除&#xff1a;drop 使用(切换)&#xff1a;use 表&#xff1a; 查看&#xff1a;desc show 创建&#xff1a;create 表结构修改 rename as add drop modify change rename as …

力扣高频SQL 50题(基础版)第八题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第八题1581. 进店却未进行过交易的顾客题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图&#xff1a;总结&#xff1a; 力扣高频SQL 50题&#xff08;基础版&#xff09;第八题 1581. 进店…

mysql中的索引和分区

目录 1.编写目的 2.索引 2.1 创建方法 2.2 最佳适用 2.3 索引相关语句 3.分区 3.1 创建方法 3.2 最佳适用 Welcome to Code Blocks blog 本篇文章主要介绍了 [Mysql中的分区和索引] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 1.编写目的 在MySQL中&…

【python】python大学排名数据抓取+可视化(源码+数据集+可视化+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…