【Python】Python学习笔记(六)字符串

news2024/11/28 8:29:42

字符串

基本操作

使用索引来读取字符串

Python允许使用正数或者负数来读取字符串中的某一个字符。
使用正数索引:

#按顺序打印输出字符串内的所有字符。

s = 'ABCDEFG'

print('s[0] = ', s[0])
print('s[1] = ', s[1])
print('s[2] = ', s[2])
print('s[3] = ', s[3])
print('s[4] = ', s[4])
print('s[5] = ', s[5])
print('s[6] = ', s[6])

使用负数索引时,注意最后一个字符串是-1,倒数第二个是-2,以此类推。

#按顺序打印输出字符串内的所有字符。

s = 'ABCDEFG'

print('s[-7] = ', s[-7])
print('s[-6] = ', s[-6])
print('s[-5] = ', s[-5])
print('s[-4] = ', s[-4])
print('s[-3] = ', s[-3])
print('s[-2] = ', s[-2])
print('s[-1] = ', s[-1])

使用索引遍历字符串

  • len函数可以获取字符串(列表等)的元素总数。
# 读取字符串后,使用for语句遍历其中所有字符串并输出。

s = input('字符串:')

for i in range(len(s)):
    print('s[{}] = {}'.format(i,s[i]))

实例:使用索引搜索字符串内的字符

下面是一个从字符串内寻找特定字符c的小例子。

# 从读取的字符串中搜索字符。

s = input('字符串s:')
c = input('查找的字符串c:')

print('字符{}'.format(c), end='')

for i in range(len(s)):
    if s[i] == c:
        print('在[{}]中。'.format(i))
        break
else:
    print('不存在。')

分片

分片的表达式如下:

s[i:j]    ->从s[i]到s[j-1]个字符
s[i:j:k]  ->从s[i]到s[j-1]每隔k个取出字符进行排列

其中i,j,k的含义如下:

  • 开始i:相当于取出范围内的第一个元素的索引。
  • 结束j:相当于取出范围内的最后一个元素的下一个元素的索引。
  • 步进k:去字符的间隔。

i,j,k所需要遵顼的一些规则:

  • 如果 i 和 j 大于len(s),则程序认为 i 和 j 等于len(s)。
  • i 被省略或为None时,程序认为 i 等于0。
  • j 被省略或为None时,程序认为 j 等于0。

一些实例如下:

例子含义
s[ : ]所有字符
s[ :n]开头的n个元素
s[i: ]s[i]开始到字符串末尾
s[-n:]最后n个元素
s[::k]每隔k-1个元素取出一个字符
s[::-1]反向取出所有字符

注意:字符串是不可变类型,所以s[5] = 'X'这种写法是错误的。

判断字符串的的大小关系

  • 可以使用比较运算符<,<=,>、>=、==、!=来判断字符串的大小关系和等价性。运算的结果是True或者False。判断时使用字典序进行判断。

此处需要注意,分别生成的字符串是不同的对象。

因此,会出现即使字符串中所有字符都相同,在使用is运算符的情况下,判断结果也为假

在这里插入图片描述

成员运算符

  • x in y:如果x是y的元素,则生成True,否则生成False。
  • x not in y:如果x不是y的元素,则生成True,否则生成False。
# 字符串txt是否包含字符串ptn

txt = input('字符串txt:')
ptn = input('字符串ptn:')

if ptn in txt:
    print('ptn属于txt。')
else:
    print('ptn不属于txt。')

使用enuerate函数遍历字符串

enuerate函数是一个内置函数,其可以承兑获取索引和元素。

# 使用enumerate函数遍历并输出字符串内的所有字符。

s = input('字符串:')

for i, ch in enumerate(s):
    print('s[{}] = {}'.format(i,ch))

令下标从1开始计数:

# 使用enumerate函数遍历并输出字符串内的所有字符(从1开始计数)

s = input('字符串:')

for i, ch in enumerate(s, 1):
    print('第{}个字符:{}'.format(i, ch))

反向遍历:

# 使用enumerate函数反向遍历并输出字符串内的所有字符

s = input('字符串:')

for i, ch in enumerate(reversed(s), 1):
    print('倒数第{}个字符是{}'.format(i, ch))

不使用索引遍历字符串

# 反向遍历并输出字符串内所有字符

s = input('字符串')

for ch in s[::-1]:
    print(ch, end='')

常用函数

搜索

find

str.find(sub[, start[, end]])

查看包含第一个sub字符串的位置。返回其中最小的索引值,若不存在则返回-1。

rfind

str.rfind(sub[, start[, end]])

查看包含的最后一个sub字符串的位置。返回其中最大的索引值,若不存在则返回-1。

index

str.index(sub[, start[, end]])

查看会包含的第一个sub字符串位置。返回其中最小的索引值,若不存在,抛出ValueError异常。

rindex

str.rindex(sub[, start[, end]])

查看包含的最后一个sub字符串的位置。返回其中最大的索引值,若不存在,抛出ValueError异常:

以下是一个小例子:

# 搜索字符串中包含的字符串

txt = input('字符串txt:')
ptn = input('字符串ptn:')

try:
    print('ptn存在于txt[{}]'.format(txt.index(ptn)))
except ValueError:
    print('ptr不存在于txt内')

count

str.count(sub[, start[, end]])

查找字符串内包含了几个sub。返回不重叠出现的次数。

startswith

str.startswith(prefix[, start[, end]])

判断字符串是否以prefix开始。是则返回True,不是则返回False。

endswith

str.endswith(suffix[, start[, end]])

判断字符串是否以suffix结束。是则返回True,不是则返回False。

下面是一个小实例:

# 搜索字符串中包含的字符串

txt = input('字符串txt:')
ptr = input('字符串ptr:')

c = txt.count(ptr)

if c == 0:
    print('txt不包含ptr。')
elif c == 1:
    print('txt包含ptn索引为:', txt.find(ptr))
else:
    print('txt包含的第一个ptr的位置是:', txt.find(ptr), sep='')
    print('txt包含的最后一个ptr的位置是:', txt.rfind(ptr), sep='')

拼接字符串

str.join(iterable)
分隔用字符.join(存储待拼接字符的可迭代对象)

一般来说,使用join方法比使用+或者+=的拼接速度更快。

分割字符串

str.split(sep=None, maxsplit=-1)

使用sep字符串分割字符串str,程序返回由分割后的字符串抽成的列表,如果没有设定sep,程序则以连续的空白字符作为分隔符。maxseplit参数表示分割的次数,如果设定为-1或者不设定,则程序不限制分割次数。

替换字符串

str.replace(old, new[, count])

replace方法会复制字符串并将字符串old全部替换为new,然后返回新的字符串。如果指定count参数,程序就会从前往后替换count次old。count参数可以省略。

删除字符串

str.strip([chars])

strip方法可以删除字符串头尾的chars字符串并返回新字符串。如果chars省略火为None,则删除字符串头尾的空格。

大小写转换

capitalize

str.capitalize()

将字符串首字符转换为大写字母,其余转换为小写字母,然后复制并返回新的字符串。

lower

str.lower()

将字符串中存在大小写区别的字母全部转换为小写字母,然后复制并返回新的字符串。

swapcase

str.swapcase()

将字符串中的大写字母转换为小写字母,小写字母转换为大写字母,复制并返回新的字符串。

title

str.title()

将字符串中的每一个单词的首字母转换为大写字母,其余存在大小写区别的字母转换为小写字母,然后复制并返回新的字符串。

upper

str.upper()

将字符串中存在大小写区别的字母全部转换为大写字母,然后复制并返回新的字符串。

判断字类别

str.isalnum()		# 是否为isalpha、isdecimal、isnumeric这种的一种
str.isalpha()		# 是否为英语字符
str.isascii()		# 是否ASCII字符
str.isdecimal()		# 是否为十进制数
str.isdigit()		# 是否为数字
str.isidentifier()	# 是否作为有效的标识符
str.islower()		# 是否为小写字符
str.isnumeric()		# 是否为数字
str.isprintable()	# 是否为可打印字符
str.isspace()		# 是否为空白字符
str.istitle()		# 首字母是否大写
str.isupper()		# 是否为大写字母

对齐字符串

center

str.center(width[, fillchar])

返回一个居中且使用fillchar填充(省略时使用空格填充)到width长度的字符串。

ljust

str.ljust(width[, fillchar])

返回一个左对齐且使用fillchar填充(省略时使用空格填充)到width长度的字符串。

rjust

str.rjust(width[, fillchar])

返回一个右对齐且使用fillchar填充(省略时使用空格填充)到width长度的字符串。

格式化

Python的格式化有三种:格式化运算符%、format方法、f字符串。
三种格式化方法其实大差不差,与cpp基本无异。

格式化字符串%

# 使用格式化运算符#进行格式化操作

a, b, n = 12, 35, 163
f1, f2 = 3.14, 1.23456789
s1, s2 = 'ABC', 'XYZ'

print('n的十进制表示是=%d。' % n)
print('n用十六进制表示=%o。' % n)
print('%d用八进制表示为%o用十六进制表示为%x。' % (n, n, n))

print('n为%5df1为%9.5ff2为%9.5f。' % (n, f1, f2))

print('"%s"+"%s"等于"%s"。' % (s1, s2, s1 + s2))

print('%d与%d的和为%d。' % (a, b, a+b))

print('%(no1)d+%(no2)d和%(no2)d+%(no1)d都等于%(sum)d。' %
        {'no1':a, 'no2':b, 'sum': a + b})

在这里插入图片描述

f字符串

# 使用f字符串进行格式化(打印输出生成的字符串)

a = int(input('整数a:'))
b = int(input('整数b:'))
c = int(input('整数c:'))
n = int(input('整数n:'))
f1 = float(input('实数f1:'))
f2 = float(input('实数f2:'))
s = input('字符串s:')
print()

print(f'a / b = {a / b}')
print(f'a % b = {a % b}')
print(f'a // b = {a // b}')
print(f'b是a的{a / b:%}')     # 百分率
print()
print(f'     a    b    c')
print(f'[+]{a:+5}{b:+5}{c:+5}')  # '+' '-'
print(f'[-]{a:-5}{b:-5}{c:-5}')  #     '-'
print(f'[ ]{a: 5}{b: 5}{c: 5}')  # ' ' '-'
print()
print(f'{c:<12}')  # 左对齐
print(f'{c:>12}')  # 右对齐
print(f'{c:^12}')  # 居中
print(f'{c:=12}')  # 在符号后填充字符
print()
print(f'n = {n:4}') # 至少四位
print(f'n = {n:6}') # 至少六位
print(f'n = {n:8}') # 至少八位
print(f'n = {n:,}') # 每3位插入一个,
print()
print(f'n = ({n:b})2')  # 二进制数
print(f'n = ({n:o})8')  # 八进制数
print(f'n = ({n})10')   # 十进制数
print(f'n = ({n:x})16') # 十六进制数(小写字母)
print(f'n = ({n:X})16') # 十六进制数(大写字母)
print()
print(f'f1 = {f1:e}')   # 指数形式
print(f'f1 = {f1:f}')   # 固定小数点形式
print(f'f1 = {f1:g}')   # 自动判断格式
print()
print(f'f1 = {f1:.7f}')  # 精度为7
print(f'f1 = {f1:12f}')  # 总位数为12
print(f'f1 = {f1:12.7}') # 总位数为12且精度为7
print()
print(f'f2 = {f2:.0f}')  #如果没有小数部分则省略
print(f'f2 = {f2:#.0f}') #即使没有小鼠部分也保留小数点
print()
print(f'{s:*<12}')  # 左对齐
print(f'{s:*>12}')  # 右对齐
print(f'{s:*^12}')  # 居中
print()

for i in range(65, 91):
    print(f'{i:c}', end='')
print()

在这里插入图片描述
格式化这里平常多用用,不会的查两次csdn或者书本就熟悉常用的啦~

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

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

相关文章

计算机网络学习01

网络分层模型 1、OSI 七层模型是什么&#xff1f;每一层的作用是什么&#xff1f; OSI 七层模型 是国际标准化组织提出一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 每一层都专注做一件事情&#xff0c;并且每一层都需要使用下一层提…

【MySQL自学之路】第5天——对数据表数据的增删改查1

目录 前言 使用的数据库 数据表 ​编辑 表结构 插入数据&#xff08;insert into&#xff09; 插入一条数据 插入多条数据 修改数据&#xff08;update set&#xff09; 修改一条数据的值 ​编辑 修改多条数据的值 删除数据&#xff08;delete from&#xff09;…

计算机网络学习09(TCP传输可靠性保障)

1、TCP 如何保证传输的可靠性&#xff1f; 基于数据块传输 &#xff1a; 应用数据被分割成 TCP 认为最适合发送的数据块&#xff0c;再传输给网络层&#xff0c;数据块被称为报文段或段。对失序数据包重新排序以及去重&#xff1a; TCP 为了保证不发生丢包&#xff0c;就给每个…

Python德劳内三角剖分

文章目录 初步认识构造函数和属性实战-画个球 初步认识 对于熟悉matplotlib三维画图的人来说&#xff0c;最常用的应该是plot_surface&#xff0c;但这个函数的绘图逻辑是&#xff0c;将xy平面映射到z轴&#xff0c;所以没法一次性绘制球&#xff0c;只能把球分成两半&#xf…

python+nodejs+php+springboot+vue 企业仓库进销存管理系统

提供管理员管理和数据备份&#xff0c;确保信息的安全性和可靠性。仓库管理是企业的核心&#xff0c;是必不可少的一个部分。在企业的整个供应链中&#xff0c;仓库管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类仓库管理程序也在不断改进。本系统除了…

三大本土化战略支点,大陆集团扩大中国市场生态合作「朋友圈」

“在中国&#xff0c;大陆集团已经走过30余年的发展与耕耘历程&#xff0c;并在过去10年间投资了超过30亿欧元。中国市场也成为了我们重要的‘增长引擎’与‘定海神针’。未来&#xff0c;我们将继续深耕中国这个技术导向的市场。”4月19日上海车展上&#xff0c;大陆集团首席执…

Python中的数据类型(python专栏002)

Python 中常用的数据类型包括&#xff1a; 数字类型&#xff1a;包括整型(int)、长整型(long)、浮点型(float)、复数型(complex)。字符串类型(str)&#xff1a;用于保存文本数据&#xff0c;可以使用单引号、双引号或三引号来定义字符串。列表类型(list)&#xff1a;可以保存多…

LeetCode:19. 删除链表的倒数第 N 个结点

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340; 算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;19. 删除链表的倒数第 N 个结点 题目描述&#xff1a;给你一个链表&a…

安装torch-cluster、torch-geometric、torch-scatter、torch-sparse、torch-spline-conv等库

在安装torch-cluster、torch-geometric、torch-scatter、torch-sparse、torch-spline-conv这些库时&#xff0c;要确保所下载的库与自己的torch和CUDA版本相匹配。以下是详细的步骤来找到并安装相应版本的库&#xff1a; 步骤一&#xff1a;首先&#xff0c;我们需要查看当前系…

【LeetCode】27. 消失的数字

题目链接&#xff1a;https://leetcode.cn/problems/remove-element/ &#x1f4d5;题目要求&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;…

HashMap底层源码解析及红黑树分析

HashMap线程不安全&#xff0c;底层数组链表红黑树 面试重点是put方法&#xff0c;扩容 总结 put方法 HashMap的put方法&#xff0c;首先通过key去生成一个hash值&#xff0c;第一次进来是null&#xff0c;此时初始化大小为16&#xff0c;i (n - 1) & hash计算下标值&a…

PWM输入信号转换模拟量电压电流隔离变送器1Hz~10KHz转0-10V/1-5V/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

有什么牌子台灯性价比高?性价比最高的护眼台灯

由心感叹现在的孩子真不容易&#xff0c;学习压力比我们小时候大太多&#xff0c;特别是数学&#xff0c;不再是简单的计算&#xff0c;而更多的是培养学生其他思维方式&#xff0c;有时候我都觉得一年级数学题是不是超纲了。我女儿现在基本上都是晚上9点30左右上床睡觉&#x…

RK3399平台开发系列讲解(FLASH篇)MTD子系统结构

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、什么是MTD二、MTD系统结构沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux内核对Flash存储器有很好的支持。内核设计了一个MTD(Memory Technology Device,内存技术设备)结构支持F…

平安银行潘多拉指标平台建设案例

潘多拉指标平台是平安银⾏指标管理和指标应⽤的统⼀平台。该平台以业务场景为驱动&#xff0c;提供了 AIBI内容的基础能⼒&#xff0c;并结合组件化开放平台&#xff0c;提供数据分析与应⽤的⼀站式解决⽅案。内容⽅⾯&#xff0c;提供了指标、维度和标签的录⼊、发布和规范化管…

一文看懂数据分析必备计算功能—内存计算

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 接下来&#xff0c;我们准备讲一系列的奥威BI软件的内存计算在各种分析场景中的应用。在正式开讲之前&#xff0c;我先简单说一下…

什么是阻抗?影响阻抗的因素有哪些?

问 什么是阻抗&#xff1f; 答 在具有电阻、电感和电容的电路里&#xff0c;对电路中的电流所起的阻碍作用叫做阻抗。 问 什么是阻抗匹配&#xff1f; 答 阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配。阻抗匹配主要有两点作用&#xff0c;调整负载功率和…

MATLAB函数封装2:QT调用封装函数

在利用MATLAB进行封装函数之后&#xff0c;最主要的目的是对函数进行调用&#xff0c;能够对矩阵运算和其他算法的运行进行快捷处理。 在有了MATLAB函数之后封装成DLL文件之后&#xff0c;在QT中添加动态链接库&#xff0c;就可以实现函数的调用过程&#xff0c;这个过程相对简…

「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验

「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验 一、前言1.1 本次实践介绍1.2 本次实践目的 二、准备环境资源2.1 部署前需准备工作2.2 本地环境规划 三、部署Docker环境3.1 安装Docker3.2 配置Docker镜像加速3.3 开启路由转发3.4 重启Docker服务 四、检查本地Doc…

开发者如何成为更好的自己,耐心和观察是关键

个人成长需要有耐心和观察力&#xff0c;这是一个“等待并观察”的视角。个人成长是一个自我提升的过程&#xff0c;需要结合耐心和观察力。这个过程可能会面临挑战&#xff0c;需要花费很多时间和精力&#xff0c;但最终的结果是值得的。耐心和观察是个人成长过程中的两个重要…