【Python字符串攻略】:玩转文字,编织程序的叙事艺术

news2024/10/4 12:30:48

文章目录

      • 🚀一.字符串基础
      • 🌈二.查看数据类型
      • ⭐三.转化
      • ❤️四.字符串索引
      • 🚲五.字符串切片
      • 🎬六.字符串切片-步长
      • ☔七.反向切片注意事项
      • 🚲八.字符串
        • 💥查
        • 💥改
        • 💥删
      • ❤️九.字符串拼接
        • 💥拼接符: +
        • 💥占位符:%s
        • 💥join方法
        • 💥format
      • ⭐十.字符串格式化

🚀一.字符串基础

在这里插入图片描述

在Python中,字符串(str)可以被定义为一系列字符 (characters),这些字符可以是字母、数字或者其他任意字符。例如:

my_string = "Hello World!"

在上面的例子中,我们定义了一个名为 my_string 的字符串。它由 12 个字符组成,其中包括字母、空格和标点符号。请注意,字符串必须用双引号或单引号括起来。

字符串特征
    ' '
    " "
    """ """
均为字符串

例如:

name1 = '张三'
print(type(name1)) # <class 'str'>

name2 = "张三"
print(type(name2)) # <class 'str'>

name3 = """张三"""
print(type(name3)) # <class 'str'>


""" """ # 用于字符串跨行,不必使用换行拼接

🌈二.查看数据类型

可以通过 type函数 查看指定数据类型

type('张三') # <class 'str'> 

⭐三.转化

在Python中,可以使用 str() 内置函数将其他类型的数据转换为字符串。这个函数接受一个参数并返回一个表示该参数值的字符串。

num = 42
result = str(num)
print(result)  # '42'

pi = 3.14159
result = str(pi)
print(result)  # '3.14159'

c = complex(2, 3)
result = str(c)
print(result)  # '(2+3j)'

# 想要在print出来的结果中更加直观地看到数据类型情况,可以通过type函数查看类型

在这里插入图片描述

❤️四.字符串索引

字符串是扁平序列,不可变序列

我们可以使用索引来访问字符串中的特定字符。在Python中,字符串的第一个字符的索引是 0,第二个字符的索引是 1,依此类推。例如:

my_string = "Hello World!"
print(my_string[0])  # H
print(my_string[6])  # W

除了正向索引之外,还可以使用负数索引访问序列中的元素。在这种情况下,从右到左计数,最后一个元素的索引为-1,以此类推。例如:

my_list = [1, 2, 3, 4, 5]
print(my_list[-1])  # 5
print(my_list[-3])  # 3

🚲五.字符串切片

在Python中,切片允许我们从序列类型数据中选择一个子集并返回一个新的序列。切片语法由两个索引值和一个可选的步长组成,如下所示:

sequence[start:stop:step]   # sequence 序列

其中 start 是切片开始的索引位置(默认为0),stop 是切片结束的索引位置(不包括该位置所在的元素,默认为序列长度),step 是切片中元素之间的步长(默认为1)。

例如,假设我们有以下字符串:

my_string = "Hello World"

要获取 ‘Hel’ 以及 ‘lo W’,我们可以分别使用以下两个切片操作:

# [start:stop]

# 获取 'Hel'
print(my_string[0:3])

# 获取 'lo W'
print(my_string[3:7])

输出结果:

Hel
lo W

在这里插入图片描述

另外,如果要获取字符串的最后三个字符,可以使用负数索引和空的 start 来进行切片操作。例如:

# 获取 'rld'
print(my_string[-3:])

# 切出 倒数第三个数据开始 到 最后一个数据结束

输出结果:

rld

🎬六.字符串切片-步长

在切片中,还可以使用步长来控制返回的元素之间的距离。例如,要从一个列表中获取所有的偶数位置的元素,可以使用步长为2的切片操作。示例代码如下:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[::2])
# 切片范围(从头到尾),走两步取一个值 

输出结果:

[0, 2, 4, 6, 8]

在这个例子中,我们使用一个空的 startstop 来表示从头到尾,并使用步长为2来获取所有偶数位置的元素。

☔七.反向切片注意事项

my_string = "Hello World"

# 获取除最后两个字符外的所有字符 
# -- 起始位置 开头 可不填 也可填写0
# -- 结束位置 -2
result = my_string[:-2]
print(result)  # 'Hello Wor'

# 获取最后的两个数据
result = my_string[-2:]
print(result)  # 'ld'

在这里插入图片描述

接下来的操作注意观察, 观察后理解

my_string = "Hello World"

# 当步长为负数时,数据反转  这个数据序列反过来进行步长操作
result0 = my_string[::-1] # 'dlroW olleH'
result1 = my_string[::-2] # 'drWolH'

# 那么 起始位置与结束位置操作也将进行反转 -- 反向索引
result2 = my_string[-1:-3:-1]  # 'dl'

# 起始位置 -1  结束位置 2   
result3 = my_string[-1:2:-1] # 'dlroW ol'
"""
这里之所以能够成立是因为步长为负数,我们参考将从后往前
因此 切片方向将从后往前看
"""

在这里插入图片描述

在这里插入图片描述

🚲八.字符串

字符串中的元素是指字符串中的每个字符,一个字符串是由一系列字符组成的。例如,字符串 "hello, world!" 是由 13 个字符组成的,分别是 'h'、'e'、'l'、'l'、'o'、','、' '、'w'、'o'、'r'、'l'、'd' 和 '!' 。可以使用索引和切片来访问和操作这些字符。在 Python 中,字符串是不可变序列,即它们的元素不能被更改,只能通过复制或拼接等方式来创建新的字符串。
字符串无法修改原数据
💥查
  • count:查找指定元素在字符串中出现的次数,可指定范围
# count:查找指定元素在字符串中出现的次数
str1 = 'addfbcvfd'
print(str1.count('d'))  # 3
  • index: 查找指定元素第一次出现的位置下标 - 找不到报错 【可指定范围】
# index: 查找指定元素第一次出现的位置下标 - 找不到报错
str2 = 'qwert帅哈yuil哈哈'
print(str2.index('哈'))  # 6
print(str2.index('放'))  # ValueError: substring not found(值错误:未找到子字符串)
  • find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1) 【可指定范围】
# find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1)
str2 = 'qwert帅哈yuil哈哈'
print(str2.find('哈'))  # 6
print(str2.find('放'))  # -1
  • isdigit: 判断字符串是否由纯数字构成
# isdigit: 判断字符串是否由纯数字构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isdigit())  # True
print(str4.isdigit())  # False
print(str5.isdigit())  # False
  • isalpha: 判断字符串是否由纯字符构成
# isalpha: 判断字符串是否由纯字符构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isalpha())  # False
print(str4.isalpha())  # False
print(str5.isalpha())  # True
  • endswith: 判断字符串结束位置字符是否是指定字符
# endswith: 判断字符串结束位置字符是否是指定字符
str6 = 'axiba'
print(str6.endswith('ba'))  # True
print(str6.endswith('aa'))  # False
  • startswith: 判断字符串开始位置字符是否是指定字符
# startswith: 判断字符串开始位置字符是否是指定字符
str6 = 'axiba'
print(str6.startswith('ax'))  # True
print(str6.endswith('aa'))  # False
  • islower: 判断字符串中(英文字符)是否为纯小写
# islower: 判断字符串中(英文字符)是否为纯小写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
print(str7.islower())  # True
print(str8.islower())  # False

  • isupper: 判断字符串中(英文字符)是否为纯大写
# isupper: 判断字符串中(英文字符)是否为纯大写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
str9 = 'QWERT哈哈'
print(str7.isupper())  # False
print(str8.isupper())  # False
print(str9.isupper())  # True

注意字符串的不可变性质:无法改变原数据

💥改
  • split: 切割字符串
# split: 切割字符串
str10 = 'hello world'
data_1 = str10.split('o')
print(data_1)  # ['hell', ' w', 'rld']

# 注意: 默认去去空格
str11 = 'ha     sd     '
data_2 = str11.split()
print(data_2)  # ['ha', 'sd'] 

在这里插入图片描述

  • strip:去除字符串开头与结尾的空格
# strip:去除字符串开头与结尾的空格
str12 = ' sdfg  '
data_3 = str12.strip()
print(data_3)  # sdfg

# lstrip:去除左边空格
str13 = '  shuai'
print(len(str13))  # 原字符串长度:7
data_4 = str13.lstrip()
print(len(data_4))  # 改变后字符串长度: 5

# rstrip:去除右边空格
str14 = 'shushu '
print(len(str14))  # 改变前字符串长度: 7
data_5 = str14.rstrip()
print(len(data_5))  # 改变后字符串长度: 6

在这里插入图片描述

  • upper: 小写改大写
# upper: 小写改大写
str15 = 'qrtyQWE帅123'
data_6 = str15.upper()
print(data_6)  # QRTYQWE帅123

在这里插入图片描述

  • lower: 大写改小写
# lower: 大写改小写
str16 = 'qrtyQWE帅123'
data_7 = str16.lower()
print(data_7)  # qrtyqwe帅123

在这里插入图片描述

  • capitalize: 字符串首字母大写
# capitalize: 字符串首字母大写
str17 = 'hello 帅hi english'
data_8 = str17.capitalize()
print(data_8)  # Hello 帅hi english

在这里插入图片描述

  • title: 字符串里面单词首字母大写
# title: 字符串里面单词首字母大写
str18 = 'hello 帅hi english'
data_9 = str18.title()
print(data_9)  # Hello 帅Hi English

在这里插入图片描述

💥删
  • replace:替换
# 默认替换所有
str19 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_10 = str19.replace('哈', '-')  # shuju真的很帅-!学习的快乐 ----
print(data_10)


# 指定替换次数
str20 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_11 = str20.replace('哈', '-', 2)  # shuju真的很帅-!学习的快乐 -哈哈哈
print(data_11)



# 达到删除效果 ---- 删除空格
str21 = 'sh 真的很   帅哈!学习的  快乐     '
data_12 = str21.replace(' ', '')
print(data_12)  # sh真的很帅哈!学习的快乐
  • replace(old, new [, count])
    • old:被替换的元素
    • new:替换成什么
    • count:可传可不传,可指定替换次数;默认所有

❤️九.字符串拼接

💥拼接符: +
str_1 = '你很'
str_2 = '帅'
splicing = str_1 + str_2
print(splicing)  # 你很帅
💥占位符:%s
str_3 = '18'
# 有几个占位符就得传几个字符串进去
placeholder = '%s今年%s岁' % ('小明', str_3)
print(placeholder)  # 小明今年18岁
💥join方法
str_4 = '帅'
str_5 = '真的'
str_6 = '他'

join_merge = '-'.join([str_6, str_5, str_4])
print(join_merge)  # 他-真的-帅


# join_merge = ''.join([str_6, str_5, str_4])
# print(join_merge)  # 他真的帅
💥format
str_4 = '帅吗?'
str_5 = '真的'
str_6 = '他'

# 默认位置  1对1
format_merge_1 = '{}{}很{}'.format(str_6, str_5, str_4)
print(format_merge_1)  # 他真的很帅吗?

# 根据下标位置                        0       1      2
format_merge_2 = '{0}{2}很{1}'.format(str_6, str_4, str_5)
print(format_merge_2)  # 他真的很帅吗?

# 重新命名,内部指定
format_merge_3 = '{n1}{n3}很{n2}'.format(n1=str_6, n2=str_4, n3=str_5)
print(format_merge_3)  # 他真的很帅吗?

# python3优化的: 通过f申明,配合{}进行直接指定插入
format_merge_4 = f'{str_6}{str_4}{str_5}'
print(format_merge_4)  # 他真的很帅吗?

在这里插入图片描述

⭐十.字符串格式化

#1. %s 占位符
print('%s' % '帅')

#2. %r 显示原数据类型
print('%r' % '帅')

# %d 整数
print('%d' % 1)

# %f 浮点数
print('%f' % 2.1)

# %c ASCII
print('%c' % 65)

# %o 8进制
print('%o' % 11)

# %x 16进制
print('%x' % 11)

# %e 科学计数法
print('%e' % 10.3)


# -: 左对齐  6:这位置指定长度  3:这位置指定小数点后面保留多少位
print('%-6.3f' % 10.3)  # 优先满足小数点后几位数

# +:显示正号
print('%+6.3f' % 10.3)  # 优先满足小数点后几位数

# 格式化长度
print('%5s' % 'ab')  #   ab

在这里插入图片描述

format扩展

# format扩展

# 保留小数点后两位
a1 = '{:.2f}'.format(12.333)
print(a1)

# 指定传入,保留小数点后两位
a2 = '{s:.2f}'.format(s=12.333)

print(a2)
# 百分比格式化
a3 = '{:.2%}'.format(0.333)
print(a3)  # 33.30%


# 转十六进制
a4 = '{:x}'.format(20)
print(a4)
# 转八进制
a6 = '{:o}'.format(20)
print(a6)


# 左对齐,长度为10
a7 = '{a:<10}'.format(a=12.3, b=13.44)
print(a7)
# 传入数据长度不足,用x填充
a8 = '{a:x<10}'.format(a=12.3, b=13.44)
print(a8)
# 右对齐
a9 = '{a:>10}'.format(a=12.3, b=13.44)
print(a9)
# 两边对齐
a10 = '{a:^10}'.format(a=12.3, b=13.44)
print(a10)

在这里插入图片描述

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

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

相关文章

引擎:UI

一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…

2年JAVA今日头条3轮面试经历

面头条的时候已经是十月底了。大半个月没有面试&#xff0c;之前准备的知识点比如http状态码之类的记忆性的东西&#xff0c;早就忘光了。 二面的时候问了一堆状态码&#xff0c;全都不记得了。面试官态度很好&#xff0c;跟我说&#xff0c;你现在不记得了&#xff0c;说明你…

[数据集][目标检测]医疗防护服检测数据集VOC+YOLO格式649张7类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;649 标注数量(xml文件个数)&#xff1a;649 标注数量(txt文件个数)&#xff1a;649 标注类别…

骨传导耳机有哪些是值得入手的?看完这篇推荐就懂了!

骨传导耳机在运动圈非常的受欢迎&#xff0c;因为佩戴运动的时候&#xff0c;骨传导耳机能够稳固佩戴&#xff0c;无论是跳跃或者是摇晃身体等&#xff0c;耳机都不会轻易掉落&#xff01;而很多朋友对于骨传导耳机总是想尝试却又害怕掉坑&#xff01;于是为了给大家提供更多的…

Gradio.NET:一个快速制作演示demo网页的利器

Gradio介绍 Gradio是一个用于创建机器学习模型交互界面的Python库。它允许开发者快速为他们的模型创建一个简单的web界面&#xff0c;以便于非技术用户和其他开发者进行交互和测试。 Gradio的主要优点是易用性和灵活性。你只需要几行代码就可以为你的模型创建一个交互界面。你…

前端实现输入内容计算密码强度

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、思路二、计算密码强度分数密码强度动画展示效果完善动画效果完整代码前言 平时我们在浏览各种网站和 APP 的时候,都接触过密码这个东西~ 密码设置的好不好,关乎到你的账号安全性,越复杂的密码越安全,所以密码强度…

【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战

一、引言 1、简要介绍数据挖掘的重要性和应用 在数字化时代&#xff0c;数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科&#xff0c;结合了统计学、机器学习、数据库技术和可视化等多个领域的知识&#xff0c;旨在从海量数据中提取有价值的信息&#xff0c…

智能水位监测识别报警摄像机:保障水域安全的重要利器

随着城市化进程的加速和气候变化的影响&#xff0c;对水域安全的关注日益增加。为了及时监测水位变化并采取相应措施&#xff0c;智能水位监测识别报警摄像机应运而生。本文将介绍这一创新技术的应用和优势。 传统的水位监测方法通常依赖于传感器&#xff0c;但其存在着安装位置…

哪款开放式耳机佩戴最舒服?2024五款备受推崇产品分享!

​作为一位耳机领域的资深数码评测师&#xff0c;我极力推荐开放式耳机作为日常佩戴之选。这款耳机凭借其创新的非入耳设计&#xff0c;有效避免了传统入耳式耳机长时间佩戴导致的耳道不适和感染风险&#xff0c;同时提供了稳固舒适的佩戴体验&#xff0c;特别适合运动爱好者如…

关于安装typescript后运行tsc -v命令报错问题

报错信息&#xff1a; tsc 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 没有配置环境变量&#xff0c;使用npm命令查看typescript的安装目录&#xff1a; npm config get prefix 根据控制台输出的目录&#xff0c;配置path环境变量 tsc -v 运行成功&…

【WEB自动化面试02--学习过程的问题及解决】

day01 1、报错获取不到浏览器二进制文件&#xff1a;需要指定浏览器路径及驱动路径。 第一次使用谷歌浏览器驱动&#xff0c;找不到二进制文件报错&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktra…

Rust基础学习-Rust中的文件操作

文件结构 在Rust中&#xff0c;std::fs::File 结构体代表一个文件。它允许我们对文件执行读/写操作。文件 I/O 是通过提供与文件系统交互的功能的 std::fs 模块执行的。 File 结构体中的所有方法都返回std::io::Result的变体&#xff0c;或者简单地是 Result 枚举。这里会涉及…

开发项目功能开发设计模板

功能开发设计是一个系统化的过程&#xff0c;旨在确保新功能的开发既满足用户需求又符合技术标准。以下是一个适用于大多数软件开发项目功能开发设计模板&#xff1a;

短信群发平台为什么要用网页版的短信平台呢

短信群发平台选择使用网页版短信平台的原因可以归纳为以下几点&#xff1a; 1.操作简便&#xff1a; 网页版短信群发平台通常具有直观易用的界面&#xff0c;用户无需下载或安装任何软件&#xff0c;只需通过浏览器即可访问。 使得用户可以随时随地轻松进行短信发送和管理&a…

React中实现大模型的打字机效果

React 想实现一个打字机的效果&#xff0c;类似千问、Kimi 返回的效果。调用大模型时&#xff0c;模型的回答通常是流式输出的&#xff0c;如果等到模型所有的回答全部完成之后再展示给最终用户&#xff0c;交互效果不好&#xff0c;因为模型计算推理时间比较长。本文将采用原生…

Vue3+.NET6前后端分离式管理后台实战(二十五)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(二十五)已经在微信公众号更新&#xff0c;有兴趣的扫码关注一起交流学习。

企业购买一套ABAQUS需要多少钱?ABAQUS价格解析

在高性能仿真分析领域&#xff0c;ABAQUS软件凭借其强大的非线性分析能力、精确的求解精度以及广泛的应用范围&#xff0c;成为众多企业和研究机构的首选工具。然而&#xff0c;对于想要采购ABAQUS的企业来说&#xff0c;了解其价格体系是做出投资决策前的关键一步。亿达四方&a…

【全开源】数据大屏系统源码(ThinkPHP+FastAdmin)

&#x1f4c8;数据大屏系统&#xff1a;可视化数据的魅力舞台&#x1f5a5; 基于ThinkPHPFastAdmin开发的数据大屏&#xff0c;可视化义拖拽快速制作数据大屏/科技大屏&#xff0c; 内置30组件、获取实时数据、使用简单易上手&#xff0c;轻松实现图形数据统计等。​ 一、引言…

Microsoft Office 2021 批量授权版(202405)

软件介绍 Office 2021的最新版本集成了过去三年在Office 365中实施的所有改进&#xff0c;涵盖了Word、Excel、PowerPoint、Outlook、Project、Visio、Access和Publisher等应用程序。此次专为Windows设计的Office 2021更新&#xff0c;采取了一次性发布的方式&#xff0c;而不…

【Python报错】SyntaxError: invalid character in identifier

成功解决“SyntaxError: invalid character in identifier”错误的全面指南 一、引言 在Python编程中&#xff0c;SyntaxError是一种常见的编程错误&#xff0c;它表明Python解释器在解析代码时遇到了不符合语法规则的情况。其中&#xff0c;“SyntaxError: invalid character…