python之字符串总结

 字符串(str)

对于字符串的学习,我整理了网上的一些资料,希望可以帮助到各位!!!

概述

由多个字母,数字,特殊字符组成的有限序列
字符串的定义:可以使用一对单引号或者双引号,也可以一对三个单引号或者一对三个双引号定义字符串。
注意: 没有单符号的数据类型
'a' "a"
s1 = 'hello, world!'
s2 = "你好,世界!"
print(s1, s2)
# 以三个双引号或单引号开头的字符串可以折行
s3 = '''
hello, 
world!
'''
print(s3, end='')

print函数中的end=' '表示输出后不换行,即将默认的结束符\n(换行符)更换为' '(空字符)

创建字符串 

#创建字符串
str="apple"
str1='orange'
print(type(str),type(str1))#<class 'str'> <class 'str'>#\转义字符作用:让一些符号失去原有的意义
str2 = "\"李白\""
str3 = '\'原神\''
print(str2, str3)
# "李白" '原神'#定义字符串的时候,单双引号可以互相嵌套
str4="'原神,'启动!!!'"
print(str4)
# '原神,'启动!!!'

拼接和重复(+、*)

s1 = 'hello' + ' ' + 'world'
print(s1)    # hello world
s2 = '!' * 3
print(s2)    # !!!
s1 += s2     # s1 = s1 + s2
print(s1)    # hello world!!!
s1 *= 2      # s1 = s1 * 2
print(s1)    # hello world!!!hello world!!!

比较运算(ord、is、id)

字符串的比较运算比较的是字符串的内容

如果不清楚两个字符对应的编码到底是多少,可以使用ord()函数来获得

s1 = 'a whole new world'
s2 = 'hello world'
print(s1 == s2, s1 < s2)  # False True
print(s2 == 'hello world')  # True
print(s2 == 'Hello world')  # False
print(s2 != 'Hello world')  # True
s3 = '李白'
print(ord('李'), ord('白'))  # 26446 30333
s4 = '秦始皇'
print(ord('秦'), ord('始'), ord('皇'))  # 31206 22987 30343
print(s3 > s4, s3 <= s4)  # False True

如果用is来比较两个字符串,它比较的是两个变量对应的字符串对象的内存地址

s1 = str(123)
s2 = str(123)
s3 = s2
# 比较字符串的内容
print(id(s1))#2293238767536
print(id(s2))#2293238767584
print(id(s3))#2293238767584
print(s1 == s2, s2 == s3)    # True True
# 比较字符串的内存地址
print(s1 is s2, s2 is s3)    # False True

字符串特殊处理(r、f、b、u)

1、字符串前加 r
r : 的作用是去除转义字符 .
即如果 是“\n”那么表示一个反斜杠字符 ,一个字母 n ,而不是表示换行了。
r 开头的字符,常用于正则表达式,对应着 re 模块。
2、字符串前加 f
#以f开头表示在字符串内支持大括号内的python表达式
import time
name = "py小王子"
t0 = time.time()
# 这里设一些耗时操作,用sleep模拟
time.sleep(10)
print(f'{name} done in {time.time() - t0:.2f}s')
# py小王子 done in 10.00s
3、字符串前加 b
b:前缀表示:后面字符串是bytes类型。网络编程中,服务器和浏览器只认bytes类型数据。
4、字符串前加u
例:u"我是含有中文字符组成的字符串。"
后面字符串以 Unicode 格式进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

成员运算(in、not in)

s1 = 'hello, world'
print('wo' in s1)    # True
s2 = 'goodbye'
print(s2 in s1)      # False

循环遍历(range)

方法1、

s1 = 'hello'
for index in range(len(s1)):print(s1[index])

方法2、 

s1 = 'hello'
for ch in s1:print(ch)

字符串的下标和切片

下标 : 也叫索引 , 表示第几个数据
在程序中 , 下标一般从 0 开始 , 可以通过下标获取指定位置的数据
str1="welcome"
print(str1[0]) #w
print(str1[3]) #c
切片 : 从字符串中复制一段指定的内容 , 生成一个新的字符串
str2 = "welcome to beijing"
'''
切片的语法:
字符串[start:end:step]截取的字符串包含开始下标对应的字符串
start表示开始下标end表示结束下标
step表示步长
'''
print(str2[0:3])  # wel 包含start不包含end
print(str2[1:])  # elcome to beijing  若只设置了start表示从开始下标一直截取到最后
print(str2[:4])  # welc 若只设置了end表示从第一个字符开始一直截取到指定结束的位置
print(str2[1:4:2])  # ec
# print(str2[1:4:0])  # 在切片的时候,步长不能设置为0,ValueError: slice step cannot be zero
print(str2[::])  # welcome to beijing   若未设置开始和结束,表示复制字符串
print(str2[::-1])  # gnijieb ot emoclew   表示翻转字符串
print(str2[-9:-3])  # o beij    start和end若都为负数,表示从右边开始数

注意,因为字符串是不可变类型,所以不能通过索引运算修改字符串中的字符

 获取长度和次数(len、count)

str4 = "'原神,'启动!!!'"
# 获取字符串的长度len()
print(len(str4))  # 11# count()在整个字符串中查找子字符串出现的次数
str = "电脑卡了,ss电脑呢?"
print(str.count("电脑"))  # 2
# 在指定区间内查找出现的次数
print(str.count("电脑", 5, 30))  # 1

字符串查找(find、rfind、index)

#find()查找子串在字符串中第一次出现的位置,返回的是下标,若未找到返回-1ss3="123asdfASDCXaZ8765sahbzcd6a79"
print(ss3.find("a")) #3print(ss3.find("y")) #-1 未找到子串,返回-1#在指定区间内查找
print(ss3.find("a",5,20)) #12#rfind查找子串在字符串中最后一次出现的位置,返回的是下标,若未找到返回-1 print(ss3.rfind("a")) #25
print(ss3.rfind("y")) #-1#index()功能和find类似在字符串中未找到的时候,直接报错
print(ss3.index("d")) #5 
#print(ss3.index("y"))#ValueError:substringnotfound#max()min()依据ASCII码进行的获取print(max(ss3)) #z
print(min(ss3)) #1

大小写转换(upper、lower、title)

#2.字符串大小写转换upper()lower()
#upper()将字符串中的小写字母转换为大写
str1="i Miss you Very Much!"
print(str1.upper()) #I MISS YOU VERY MUCH!#lower()将字符串中的大写字母转化为小写
print(str1.lower()) #i miss you very much!#swapcase 将字符串中的大写转换为小写,将小写转换为大写]
print(str1.swapcase()) #I mISS YOU vERY mUCH!#title()将英文中每个单词的首字母转换为大写
str2="i love you forever!"
print(str2.title()) # I Love You Forever!

提取(strip)

# strip()去除字符串两边的指定字符(默认去除的是空格)
ss4 = " today is a nice day "
ss5 = "***today is a nice day****"
print(ss4)  # today is a nice day 
print(ss4.strip())  # today is a nice day
print(ss5)  # ***today is a nice day****
print(ss5.strip("*"))  # today is a nice day
# lstrip只去除左边的指定字符(默认去除的是空格)
print(ss5.lstrip("*"))  # today is a nice day****
# rstrip只去除右边的指定字符(默认去除的是空格)
print(ss5.rstrip("*"))  # ***today is a nice day

分割和合并(split、splitlines、join)

# split()以指定字符对字符串进行分割(默认是空格)
ss6 = "this is a string example.....wow!"
print(ss6.split())  # 以空格进行分割['this','is','a','string','example.....wow!']
print(ss6.split("i"))  # ['th', 's ', 's a str', 'ng example.....wow!']# splitlines()按照行切割
ss7 = '''将进酒
君不见黄河之水天上来,奔流到海不复回.
君不见高堂明镜悲白发,************.
'''
print(ss7)
print(ss7.splitlines())  # ['将进酒', '君不见黄河之水天上来,奔流到海不复回.', '君不见高堂明镜悲白发,************.']# join以指定字符进行合并字符串
ss8 = "-"
tuple1 = ("hello", "every", "body")
print(tuple1)  # ['将进酒', '君不见黄河之水天上来,奔流到海不复回.', '君不见高堂明镜悲白发,************.']
print(ss8.join(tuple1))  # hello-every-body

 替换(replace)

# 替换
# replace()对字符串中的数据进行替换
ss9 = "第五人格,启动!!第五人格,真好玩!!"
print(ss9)
print(ss9.replace("第五人格", "***"))  # ***,启动!!***,真好玩!!
# 控制替换的字符的次数
print(ss9.replace("第五人格", "***", 1))  # ***,启动!!第五人格,真好玩!!

判断(isupper、islower、isdigit、istitle、isalpha)

# 字符串判断
# isupper()检测字符串中的字母是否全部大写
print("ASDqwe123".isupper())  # False
print("ASD123".isupper())  # True
print()# islower()检测字符串中的字母是否全部小写
print("ASDqwe123".islower())  # False
print("qwe123".islower())  # True
print()# isdigit()检测字符串是否只由数字组成
print("1234".isdigit())  # True
print("1234asd".isdigit())  # False
print()# istitle()检测字符串中的首字母是否大写
print("Hello World".istitle())  # True
print("hello every body".istitle())  # False
print()# isalpha()检测字符串是否只由字母和文字组成
print("你好everyone".isalpha())  # True
print("你好everyone123".isalpha())  # False

前缀和后缀(startswith、endwith)

# 前缀和后缀:判断字符串是否以指定字符开头或者以指定字符结束# startswith()判断字符串是否以指定字符开头
# endwith()判断字符串是否以指定字符结束
s1 = "HelloPython"
print(s1.startswith("Hello"))  # True
print(s1.endswith("thon"))  # True

编解码(encode、decode)

# encode()编码
# decode()解码
s2 = "hello py小王子"
print(s2.encode())  # b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s2.encode("utf-8"))  # b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s2.encode("gbk"))  # b'hello py\xd0\xa1\xcd\xf5\xd7\xd3'
# 解码
s3 = b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s3.decode())  # hello py小王子

ASCII码转换

chr()         将对应的ASCII码的值转换为对应的字符
ord()         获取对应字符的ASCII的值
print(chr(68))  # D
print(ord("a"))  # 97

格式化输出(%)

通过%来改变后面字母或者数字的含义,%被称为占位符

# 字符串格式化输出
'''
%占位符
%d表示整数
%f表示小数
%s表示字符串
%.3f(表示保留3位小数,保留的小数数位自己可以控制)
'''
name = "py小王子"
sex = "男"
money = 198987932.787532
print("我的姓名是:%s" % name)  # 我的姓名是:py小王子
print("我的大号是%s,性别是%s,我的财富是%.2f" % (name, sex, money))
# 我的大号是py小王子,性别是男,我的财富是198987932.79
# 还可以通过f"{}{}"这种方式实现格式化输出
print(f"我的大号是:{name},性别是:{sex},我的财富是{money}")  # 我的大号是:py小王子,性别是:男,我的财富是198987932.787532

格式化字符串(center、ljust、rjust)

在Python中,字符串类型可以通过center、ljust、rjust方法做居中、左对齐和右对齐的处理。如果要在字符串的左侧补零,也可以使用zfill方法。

s1 = 'hello, world'
print('wo' in s1)  # True
s2 = 'goodbye'
print(s2 in s1)  # Falses = 'hello, world'
# center方法以宽度20将字符串居中并在两侧填充*
print(s.center(20, '*'))  # ****hello, world****
# rjust方法以宽度20将字符串右对齐并在左侧填充空格
print(s.rjust(20))  # hello, world
# ljust方法以宽度20将字符串左对齐并在右侧填充~
print(s.ljust(20, '~'))  # hello, world~~~~~~~~
# 在字符串的左侧补零
print('33'.zfill(5))  # 00033
print('-33'.zfill(5))  # -0033

总结

Python中操作字符串可以用拼接、切片等运算符,也可以使用字符串类型的方法。

恭喜你学会了字符串,快去试试吧!!!

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

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

相关文章

操作符习题练习

1.计算输入一个数的二进制中1的个数 方法一&#xff1a; #include<stdio.h> void Count(int n) {int count 0;int i 0;int tmp 0;for (i 1;i < 64;i)//这里是在64位环境下编码进行的&#xff0c;如果是在32位环境下&#xff0c;需要将循环次数改为32{tmp n &am…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台&#xff0c;与 CSGHub 无缝集成&#xff0c;形成数据到模型的全生命周期闭环&#xff0c;助力持续优化。平台兼容多种数据格式与来源&#xff0c;支持本地、云端和网络数据接入&#xff0c;并提供高效转换和读取工具&#xff0c;…

mysql上课总结(5)(MySQL的完整性约束(详细介绍))

目录 一、完整性约束。 &#xff08;1&#xff09;概念与目的。 <1>概念。 <2>目的。 &#xff08;2&#xff09;各个约束的详细&#xff08;表格&#xff09; &#xff08;3&#xff09;各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…

yarn install 出现 error Error: certificate has expired

接手老项目&#xff0c;yarn install的时候出现error Error: certificate has expired&#xff0c;提示证书过期了&#xff0c;查看yarn.lock&#xff0c;因为存在yarn.lock的项目执行yarn install是它里面去执行下载固定版本的包。 查看后发现之前一直在使用的是https://regis…

WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)

文章目录 1、案例效果1、按钮分类2、E类按钮功能实现与封装1.文件创建与代码实现2、样式引用与封装 3、F类按钮功能实现与封装1、文件创建与代码实现2、样式引用与封装 3、按钮案例演示1、页面实现与文件创建2、运行效果如下 4、源代码获取 1、案例效果 1、按钮分类 在WPF开发…

pandas——DataFrame

一、dataframe &#xff08;一&#xff09;创建dataframe file.csv Name,Age,City Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicagoimport pandas as pd 1.使用字典创建DataFrame&#xff1a; 其中字典的键是列名&#xff0c;值是数据列表。print(1.使用字典创建D…

Maven项目的基础配置:利用IDEA将SpringBoot的项目打包成war文件

文章目录 引言Maven项目的聚合与继承(依赖管理)把项目打包成war包其他打包配置引言 利用IDEA将SpringBoot的项目打包成war文件Maven项目的聚合与继承(依赖管理)Maven项目的聚合与继承(依赖管理) 把项目打包成war包 利用IDEA将SpringBoot的项目打包成war文件:要配置启动…

Vue3+TypeScript+Vite 后台管理项目_登录页面开发实战

一、前言 基于之前创建的基础工程&#xff0c;接下来我们完成登录页面的开发。 https://blog.csdn.net/qq_34709175/article/details/143426433?spm1001.2014.3001.5501 这里需要交代一下&#xff0c;项目里的文件命名规则&#xff0c;以及文件结构&#xff0c;views下存放…

【销帮帮-注册/登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨…

文件管理软件根据多个关键字将不同目录下的文件夹批量复制或移动到新的指定文件夹,完成大量文件夹和文件管理任务

在浩瀚的数字海洋中&#xff0c;文件夹如同散落的珍珠&#xff0c;等待着被有序地串连。首助编辑高手软件&#xff0c;携带着其独特的按多关键字分发功能&#xff0c;犹如一位智慧的渔夫&#xff0c;能够精准地捕捉那些含有特定关键字的文件夹&#xff0c;并将它们从各个角落批…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型&#xff08;Generative Language Models, GLMs&#xff09;在文本生成任务中取得了显著进展。然而&#xff0c;生成内容的“幻觉”现象&#xff0c;即生成内容与事实或真实语义不符的问题&#xff0c;仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

SpringBoot接入星火认知大模型

文章目录 准备工作整体思路接入大模型服务端和大模型连接客户端和服务端的连接测试 准备工作 到讯飞星火大模型上根据官方的提示申请tokens 申请成功后可以获得对应的secret&#xff0c;key还有之前创建的应用的appId&#xff0c;这些就是我们要用到的信息 搭建项目 整体思…

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接&#xff1a;https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式&#xff1a; 1、打开终端 克隆 NVM 仓库&#xff1a; git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本&#xff1a; cd ~/.n…

kafka如何获取 topic 主题的列表?

大家好&#xff0c;我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka如何获取 topic 主题的列表&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;可以…

半参数模型

4. 半参数模型 (Semi-parametric Model) 半参数模型结合了参数化和非参数化的方法。可以在整体上采用线性回归&#xff0c;但在局部允许非线性变化。这样做的目的是在保持模型的线性解释性的同时&#xff0c;捕捉细微的弧度趋势。 例如&#xff0c;可以定义&#xff1a; y …

spring 学习路线梳理(二)注解

1.通过注解的方式创建bean 1.1 定义dao层的接口和实现 public interface ILoginDao {public String login(); }Slf4j Repository public class LoginDaoImpl implements ILoginDao {public LoginDaoImpl(){System.out.println("spring create bean call");}Override…

【创建型】单例模式

单例模式使用的场景&#xff1a;需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即&#xff1a;重量级对象)&#xff0c;但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等) 1. 饿汉式&#xff08;静态常量&#xf…

怎么安装行星减速电机才是正确的

行星减速电机由于其高效、精密的传动能力&#xff0c;广泛应用于自动化设备、机器人、机床以及其他需要精准控制的领域。正确的安装行星减速电机对于确保设备的性能与延长使用寿命至关重要。 一、前期准备 在进行行星减速电机的安装之前&#xff0c;必须做好充分的前期准备工作…

代码随想录算法训练营第三十四天 | 01背包问题 416.分割等和子集

01背包问题—1(dp为二维数组)&#xff1a; 文章链接 题目链接&#xff1a;卡码网 46 思路&#xff1a; 因为有物品和背包容量两个方面&#xff0c;因此我们使用二维数组保存递推的结果 ① dp数组及下标的含义&#xff1a; dp[i][j]&#xff0c;其中 i 是第 i 个物品&#x…

什么品牌的护眼台灯比较好?五款护眼效果比较明显的护眼台灯

在当今信息爆炸的时代背景下&#xff0c;挑选一款真正符合个人需求的护眼台灯&#xff0c;确实是一项不小的挑战。市场上品牌众多、型号繁杂&#xff0c;功能特点各不相同&#xff0c;价格区间也相当广泛&#xff0c;许多消费者在选购时往往感到迷茫不已。当大家询问“什么品牌…