【python】数据容器:str(字符串)

目录

  • 数据容器入门
  • 数据容器:list(列表)
  • list(列表)的遍历
  • 数据容器:tuple(元组)
  • 数据容器:str(字符串)
  • 数据容器的切片
  • 数据容器:set(集合)
  • 数据容器:dict(字典、映射)
  • 数据容器的通用操作
  • 综合案例

学习目标

  1. 掌握字符串的常见操作

再识字符串

尽管字符串看起来并不像:列表、元组那样,一看就是存放了许多数据的容器。
但不可否认的是,字符串同样也是数据容器的一员。

字符串是字符的容器,一个字符串可以存放任意数量的字符。
如,字符串:“hello”
h --------- 0
e --------- 1
l --------- 2
l --------- 3
o --------- 4
字符串:hello

字符串的下标(索引)

和其它容器如:列表、元组一样,字符串也可以通过下标进行访问

  • 从前向后,下标从 0 开始
  • ·从后向前,下标从 -1 开始
# 通过下标获取特定位置字符
name = "hello"
print(name[0])   # 结果是 h
print(name[-1])  # 结果是 o

演示:

my_str = "hello and world 24"
# 通过下标索引取值
value = my_str[2]
value2 = my_str[-16]
print(f"从字符串 {my_str} 取下标为 2 的元素的值是:{value},去下标为 -16 的元素的值是:{value2}")

输出结果是:

从字符串 hello and world 24 取下标为 2 的元素的值是:l,去下标为 -16 的元素的值是:l

同元组一样,字符串是一个:无法修改的数据容器。

所以:

  • 修改指定下标的字符
    (如:字符串[0] = "a")
  • 移除特定下标的字符
    (如:del 字符串[0]字符串.remove()字符串.pop() 等)
  • 追加字符等
    (如:字符串.append())

均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改

演示:

my_str = "hello and world 24"
my_str[2] = "H"

输出结果是:

Traceback (most recent call last):File "d:\Python\test6.py", line 2, in <module>my_str[2] = "H"~~~~~~^^^
TypeError: 'str' object does not support item assignment

字符串的常用操作

查找特定字符串的下标索引值

语法:字符串.index(字符串)

my_str = "hello and world 24"
print(my_str.index("and")) # 结果是 6

字符串的替换

语法字符串.replace(字符串1, 字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串哦

演示:

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

输出结果:

将字符串hello and world 24,进行替换后得到:heLLo and world 24

字符串的分割

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

演示:

# split方法
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行split切分后得到:{my_str_list},类型是:{type(my_str_list)}")

输出结果是:

将字符串hello and world 24进行split切分后得到:['hello', 'and', 'world', '24'],类型是:<class 'list'>

字符串的规整操作(去前后空格)

语法:字符串.strip()

my_str = "   Hello World Hello Python"
print(my_str.strip())  # 结果:Hello World Hello Python

演示:

# strip方法
my_str = "   hello world and python"
new_my_str = my_str.strip() # 不传入参数,去除首尾空格
print(f"字符串{my_str}被strip后,结果:{new_my_str}")

输出结果:

字符串   hello world and python被strip后,结果:hello world and python

字符串的规整操作(去前后指定字符串)

语法:字符串.strip(字符串)

my_str = "12hello world and python21"
print(my_str.strip("12"))  # 结果:hello world and python

注意,传入的是 "12" 其实就是:"1""2"都会移除,是按照单个字符。

演示:

# strip方法
my_str = "12hello world and python21"
new_my_str = my_str.strip("12")
print(f"字符串{my_str}被strip('12')后,结果:{new_my_str}")

count方法 和 len方法

# 统计字符串中某字符串的出现次数,count
my_str = "hello world and newWorld"
count = my_str.count("or")
print(f"字符串{my_str}中it出现的次数是:{count}")# 统计字符串的长度
my_str = "helloworld"
num = len(my_str)
print(f"字符串{my_str}的长度是:{num}")

字符串常用操作汇总

编号操作说明
1字符串[下标]根据下标索引取出特定位置字符
2字符串.index(字符串)查找给定字符的第一个匹配项的下标
3字符串.replace(字符串1,字符串2)将字符串内的全部字符串1,替换为字符串2
不会修改原字符串,而是得到一个新的
4字符串.split(字符串)按照给定字符串,对字符串进行分隔
不会修改原字符串,而是得到一个新的列表
5字符串.strip()
字符串.strip(字符串)
移除首尾的空格和换行符或指定字符串
6字符串.count(字符串)统计字符串内某字符串的出现次数
7len(字符串)统计字符串的字符个数

字符串的遍历

同列表、元组一样,字符串也支持while循环和for循环进行遍历

my_str = "hello"
index = 0
while index < len(my_str):print(my_str[index])index += 1

while循环

my_str = "hello"
for i in my_str:print(i)

for循环

都输出的结果是:

h
e
l
l
o

字符串的特点

作为数据容器,字符串有如下特点:

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

总结:

  1. 字符串为什么被称之为数据容器呢?

字符串可以看做是字符的容器,支持下标索引等特性

  1. 字符串有哪些常用操作方法?
编号操作说明
1字符串[下标]根据下标索引取出特定位置字符
2字符串.index(字符串)查找给定字符的第一个匹配项的下标
3字符串.replace(字符串1,字符串2)将字符串内的全部字符串1,替换为字符串2
不会修改原字符串,而是得到一个新的
4字符串.split(字符串)按照给定字符串,对字符串进行分隔
不会修改原字符串,而是得到一个新的列表
5字符串.strip()
字符串.strip(字符串)
移除首尾的空格和换行符或指定字符串
6字符串.count(字符串)统计字符串内某字符串的出现次数
7len(字符串)统计字符串的字符个数
  1. 字符串有哪些特点:
  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增加或删除元素等)
  • 支持 for 循环

练习案例:分割字符串

给定一个字符串:"it-hello it-world python"

  • 统计字符串内有多少个"it"字符
  • 将字符串内的空格,全部替换为字符:"|"
  • 并按照"|"进行字符串分割,得到列表
    按照如下结果输出:
字符串it-hello it-world python中有:2个it字符
字符串it-hello it-world python,被替换空格后,结果:it-hello|it-world|python
字符串it-hello|it-world|python,按照|分隔后,得到:['it-hello', 'it-world', 'python']

提示:

  • count、replace、split
"""
字符串课后练习演示
"it-hello it-world python"
"""
my_str = "it-hello it-world python"# 统计字符串内有多少个"it"字符
num = my_str.count("it")
print(f"字符串{my_str}中有:{num}个it字符")# 将字符串内的空格,全部替换为字符:"|"
new_my_str = my_str.replace(" ", "|")
print(f"字符串{my_str},被替换空格后,结果:{new_my_str}")# 并按照"|"进行字符串分割,得到列表
my_str_list = new_my_str.split("|")
print(f"字符串{new_my_str},按照|分割后,得到:{my_str_list}")

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【远程监控新体验】OpenObserve结合内网穿透无公网IP远程访问全攻略

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址6. 配置固定公网地址前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可观…

MacOS RocketMQ安装

MacOS RocketMQ安装 文章目录 MacOS RocketMQ安装一、下载二、安装修改JVM参数启动关闭测试关闭测试测试收发消息运行自带的生产者测试类运行自带的消费者测试类参考博客&#xff1a;https://blog.csdn.net/zhiyikeji/article/details/140911649 一、下载 打开官网&#xff0c;…

并发-线程

1, 线程 线程(thread)也是并发的一种形式&#xff0c;线程是比进程更小的活动单位&#xff0c;一个进程中可以有多个线程&#xff0c;线程是进程内部的一个执行分支。 一个进程刚开始时只有一个线程(称之为主线程)&#xff0c;后续的代码中可以创建新的线程&#xff0c;可以指…

git提交到github个人记录

windows下git下载 1.进入git官网https://git-scm.com/downloads/win 一直默认选项即可 2.在settings中SSH and GPG keys中Add SSH key 3.选择git cmd git使用 1.配置用户名&#xff0c;和邮箱 git config --global user.email "youexample.com" git config --g…

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理

aws(学习笔记第六课) AWS的虚拟私有&#xff0c;共有子网以及ACL&#xff0c;定义公网碉堡主机子网以及varnish反向代理 学习内容&#xff1a; AWS的虚拟私有&#xff0c;共有子网以及ACL定义公网碉堡主机子网&#xff0c;私有子网和共有子网以及varnish反向代理 1. AWS的虚拟…

深入理解WPF中的命令机制

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一种用于构建桌面客户端应用程序的技术。它被认为是现代Windows应用程序的基础&#xff0c;具有强大的图形和媒体处理能力。在WPF中&#xff0c;“命令”是一个重要的概念&#xff0c;它为应用程序开发…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

Nest.js 实战 (十四):如何获取客户端真实 IP

问题解析 在 Nest.js 应用中&#xff0c;当你试图通过 request.ip 获取客户端的 IP 地址时&#xff0c;如果总是返回 ::1 或者 ::ffff:127.0.0.1&#xff0c;这通常意味着请求来自本地主机。 因为在前后端分离应用中&#xff0c;前端请求后端服务一般的做法都是通过代理&…

SQL进阶技巧:如何删除第N次连续出现NULL值所存在的行?

目录 0 场景描述 1 数据准备 2 问题分析 问题拓展:如何删除第2次、第3次、第N次连续出现NULL值所在的行? 3 小结 0 场景描述 有下面的场景: 我们希望删除某id中连续存在NULL值的所有行,但是保留第一次出现不为NULL值的以下所有存在NULL值的行。具体如下图所示: 如…

Leetcode 判断子序列

通过双指针来判断字符串s是否是字符串t的子序列。 算法思想&#xff1a; 双指针法&#xff1a; 我们使用两个指针i和j分别遍历字符串s和t。初始时&#xff0c;i指向s的第一个字符&#xff0c;j指向t的第一个字符。 匹配字符&#xff1a; 每次比较s[i]和t[j]&#xff1a; 如果…

大数据治理-数据质量管理

目录 一、定义数据质量 1.1 数据质量的定义 1.2 数据质量的重要性 二、常见的数据质量问题 2.1 数据不准确 2.2 数据不完整 2.3 数据不一致 2.4 数据不及时 2.5 数据无效 2.6 数据重复 三、数据清洗与转换 3.1 数据清洗 3.1.1 数据审计 3.1.2 数据验证 3.1.3 数…

uniapp小程序自定义聚合点

注&#xff1a; 1.默认的聚合点可以点击自动展示子级点位&#xff0c;但是自定义的聚合点在ios上无法触发markerClusterClick的监听&#xff0c;至今未解决&#xff0c;不知啥原因 2.ios和安卓展示的点位样式还有有差别 源码附上 <template><view class"marke…

Linux - 环境变量 | 命令行参数 | 进程基础

文章目录 一、了解冯诺依曼体系结构1、概念2、对数据层面3、实例二、操作系统1、概念2、设计OS的目的3、定位4、操作系统怎么管理&#xff1f; 三、进程1、概念2、怎么管理进程3、描述进程-PCB4、描述进程怎么运行&#xff08;粗略&#xff09;5、进程属性6、创建子进程7、创建…

PDF文件为什么不能编辑是?是啥原因导致的,有何解决方法

PDF文件格式广泛应用于工作中&#xff0c;但有时候我们可能遇到无法编辑PDF文件的情况。这可能导致工作效率降低&#xff0c;特别是在需要修改文件内容时显得尤为棘手。遇到PDF不能编辑时&#xff0c;可以看看是否以下3个原因导致的。 一、文件受保护 有些PDF文件可能被设置了…

ChatGPT 现已登陆 Windows 平台

今天&#xff0c;OpenAI 宣布其人工智能聊天机器人平台 ChatGPT 已开始预览专用 Windows 应用程序。OpenAI 表示&#xff0c;该应用目前仅适用于 ChatGPT Plus、Team、Enterprise 和 Edu 用户&#xff0c;是一个早期版本&#xff0c;将在今年晚些时候推出"完整体验"。…

[每周一更]-(第119期):“BP”大揭秘:生物学与金融学中的微小单位竟有如此大不同!

最近&#xff08;2024.09.29&#xff09;央行要把存量房贷在LPR&#xff08;贷款市场报价利率&#xff09;基础上&#xff0c;降低30BP&#xff0c;刚好基因行业内&#xff0c;也有bp的概念&#xff0c;通过发音无法区分&#xff0c;以下就讲解下生物学的bp和金融学的BP的概念的…

汽车零部件行业CRM应用数字化解决方案解析

1.行业背景与挑战分析 近年来&#xff0c;随着国家对新能源汽车行业的大力支持&#xff0c;国内汽车产业不仅在国内市场实现了弯道超车&#xff0c;而且新能源汽车的海外出口也开拓了新的市场&#xff0c;为自主品牌的新能源战略贡献了新的增长点&#xff1b;这一迅猛发展的趋…

最新版快递小程序源码 独立版快递系统 附教程

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 懂得都懂&#xff0c;现在电商平台退换货量大&#xff0c;快递需求量大&#xff0c;对接物流一个单子4块到6块之间 其中间是例如润 其余的 就不说了吧 互站上买的源码 分享一下 还有…

如何查看默认网关地址:详细步骤

在日常的网络配置与故障排查中&#xff0c;了解并正确查看默认网关地址是一项基础且至关重要的技能。默认网关是连接本地网络与外部网络&#xff08;如互联网&#xff09;的关键节点&#xff0c;它扮演着数据包转发的重要角色。无论是家庭网络、办公室网络还是更复杂的网络环境…

SSM框架学习(六、快速启动框架:SpringBoot3实战)

目录 一、SpringBoot3介绍 1.SpringBoot3简介 2.快速入门 3.入门总结 &#xff08;1&#xff09;Question1&#xff1a;为什么依赖不需要写版本&#xff1f; &#xff08;2&#xff09;Question2&#xff1a;启动器&#xff08;starter&#xff09;是什么&#xff1f; &a…