matlab 查找字符串中第一个不为空格的_【Python技术入门8】Python字符串使用详解...

在Python中,字符串是由0个或多个字符组成的不可变序列。简单点说,字符串就是由⼀对双引号 " 或者 ⼀对单引号 ' 括起来的一串字符。

01 字符串的定义

1)双引号定义

>>> str1 = "人生苦短,我用Python">>> print(str1)人生苦短,我用Python

2)单引号定义

>>> str1 = '人生苦短,我用Python'>>> print(str1)人生苦短,我用Python

3)三引号定义

一般用一对三个单引号进行定义。在三引号中可以使用特殊字符而不用转义符,字符串在输出时保持原来定义的格式。

>>> strDst = '''2020年,我被Python的设计哲学吸引,学会了Python Web开发。2021年,我的目标是进大厂,拿高薪。        实战!实战!实战!             2020/11月'''>>> print(strDst)2020年,我被Python的设计哲学吸引,学会了Python Web开发。2021年,我的目标是进大厂,拿高薪。        实战!实战!实战!             2020/11月>>> 

一般用在以下场景:

  • 多行注释;

  • 按照输入时的原格式输出文本;

  • 为了保持可读性而需要保持一定格式的文本,如SQL语句;

02 字符串的长度

语法格式:len(string)

>>> str1 = "hi, python">>> len(str1)10>>> str1 = "哲学">>> len(str1)2>>> str1 = "123456">>> len(str1)6
03 字符串元素的索引访问

根据前面的定义,字符串也是有序元素的集合。因此,通过整数索引直接访问字符串中的元素。字符串中第一个元素的索引是0,第二个元素的索引是1,…,索引依次加1,直到[列表长度-1]。

>>> str1 = "python">>> str1[0] #第一个元素'p'>>> str1[0] #最后一个元素'p'>>> 

为了方便进行字符串最后面的元素的访问,Python还提供一种特殊语法索引负数索引,从最右边到最左边进行倒数的索引计数。最右边元素(最后一个元素)索引是-1倒数第二个元素索引是-2,…,以此类推,第一个元素索引是-列表长度

>>> str1 = "python">>> str1[-1] #最后一个元素'n'>>> str1[-2] #倒数第2个元素'o'>>> str1[-len(str1)] #第1个元素'p'>>> 
特别注意:无论是 正常索引还是 负数索引,访问元素时的 索引不能超过字符串的 索引范围(索引不能越界),否则会抛出IndexError异常。
>>> str1 = "python">>> str1[10]Traceback (most recent call last):  File "", line 1, in <module>    str1[10]IndexError: string index out of range>>> str1[-10]Traceback (most recent call last):  File "", line 1, in <module>    str1[-10]IndexError: string index out of range>>> 
总结:由于列表和字符串都是有序序列,因此在进行元素访问、切片、遍历等操作时,它们的 语法都一样。 04 字符串拼接

使用加号”+”对2个字符串进行拼接,生成一个新的字符串。

>>> str1 = "hi,">>> str2 = "python">>> str3 = str1 + str2>>> print(str3)hi,python>>> 

注意:Python是强类型的语言,因此字符串不允许直接与其他类型进行拼接,而是要进行显示转换为字符串再进行拼接。例如:

>>> str1 = "今年的奖金:">>> money = 50000>>> str1 + money + "元"Traceback (most recent call last):  File "", line 1, in <module>    str1 + money + "元"TypeError: can only concatenate str (not "int") to str>>> str1 + str(money) + "元"'今年的奖金:50000元'>>> 
05 去除空格或特殊字符

1、str.strip(chars=None)

字符串对象的成员方法。返回去掉首尾的空格或指定字符后的新字符串。如果不传递chars参数,则默认去掉字符2端的空白符(如回车(\r)、换行(\n)、制表符(\t)、空格(“ ”))。

>>> str1 = "\t学python,拿高薪   ">>> str1'\t学python,拿高薪   '>>> str1.strip() #返回去掉空白符后的新字符串'学python,拿高薪'>>> 

如果要去掉首尾2端的指定字符,则需要把指定字符串传递给参数chars就可以。

>>> str1 = "   学Python,拿高薪++???">>> str1'   学Python,拿高薪++???'>>> str1.strip(" +?") #字符串首尾出现的字符" +?"都会被去掉'学Python,拿高薪'>>> 

2、str.lstrip(chars=None)

字符串对象的成员方法。

返回去掉字符串开头的空格或指定字符后的新字符串。

用法和strip函数一样。

3、str.rstrip(chars=None)

字符串对象的成员方法。

返回去掉字符串结尾的空格或指定字符后的新字符串。

用法和strip函数一样。

06 字符串大小写转换

1、str.lower()

字符串对象的成员方法。

功能:字符串的所有大写字母转为小写字母,返回转换后的新字符串;

>>> str1 = "HI,PYTHON">>> str1.lower() #所有大写字母转为小写字母'hi,python'>>> 

2、str.upper()

字符串对象的成员方法。

功能:字符串的所有小写字母转为大写字母,返回转换后的新字符串;

>>> str1 = 'hi,python'>>> str1.upper()'HI,PYTHON'>>> 

3、str.capitalize()

字符串对象的成员方法。

功能:字符串中的首字母大写,返回转换后的新字符串;

>>> str1 = 'hi,python'>>> str1.capitalize()'Hi,python'>>> str1.title()'Hi,Python'>>> 

4、str.title()

字符串对象的成员方法。

功能:字符串中的每个单词的首字母小写,返回转换后的新字符串;

>>> str1 = 'hi,python'>>> str1.capitalize()'Hi,python'>>> str1.title()'Hi,Python'>>> 

小伙伴们在平时的开发过程中,最常用的还是最上面的2个函数。capitalize()与title()的主要区别在于:

  • capitalize(): 字符串的第一个字母大写;
  • title(): 字符串的所有单词的首字母大写;
07 字符串查找和判断

1、str.find(sub[, start[, end]]) -> int

功能:查找字符串中是否包含子字符串sub,如果是则返回第一次出现该子字符串sub时的索引位置。如果不存在则返回-1。

参数:sub是必选参数,start和end表示查找的索引范围,都是可选参数。start默认为0,end默认为字符串的长度。

>>> s1 = "hi,python">>> s1.find("python") #查找字符串python是否存在3>>> s1.find("python",3,9)3>>> s1.find("python",3,8) #若指定start,end后,查找的范围不包括end-1>>> s1.find("ph") #不存在,则返回-1-1>>> 

2、str.index(sub[, start[, end]]) -> int

功能:和find的功能用法类似,都是查找字符串中是否包含子字符串sub。唯一的区别是,使用index查找时,若子字符串sub不存在则抛出异常。

>>> s1 = "hi,python">>> s1.index("python") #查找字符串python是否存在3>>> s1.index("python",3,len(s1))3>>> s1.index("python",3,len(s1)-1) #若指定start,end后,查找的范围不包括endTraceback (most recent call last):  File "", line 1, in <module>    s1.index("python",3,len(s1)-1) #若指定start,end后,查找的范围不包括endValueError: substring not found>>> s1.index("ph") #若查找的字符串不存在,则抛出异常Traceback (most recent call last):  File "", line 1, in <module>    s1.index("ph") #若查找的字符串不存在,则抛出异常ValueError: substring not found>>> 

3、str.startswith(prefix[, start[, end]]) ->bool

功能:判断字符串是否以指定的字符串prefix开头。若是返回True,否则返回False。

参数:prefix是必选参数,start和end表示判断时查找的索引范围,都是可选参数。start默认为0,end默认为字符串的长度。

>>> s1 = "[错误]发送登录请求超时">>> s1.startswith('[错误]')True>>> s1.startswith('错误', 1) #指定判断的开始索引位置True>>> s1.startswith('错误', 1, 2) #指定判断的开始和结束索引位置,不包括结束索引False>>> 

4、str.endswith(suffix[, start[, end]]) -> bool

功能:和startswith的功能用法类似。唯一的区别是,endswith判断字符串是否以指定的字符串prefix结尾。

>>> s1 = "第100条信息发送完成[End]">>> s1.endswith("[End]")True>>> s1.endswith("[完成]")False>>> 

5、in操作符

sub in str 如果sub是str的子串,返回True,否则返回False。这在仅需要判断字符串中是否存在某一子串时特别方便。通常用于if语句。

>>> "python" in "hi,python"True>>> "ph" in "hi,python"False>>> 
08 字符串的分割和连接

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

功能:通过指定的分隔符对字符串进行分割,并把分割后的字符串组成一个新列表返回。

参数:sep指定分隔符,默认为None表示默认以空白符进行分割。maxsplit表示分割次数。若指定参数maxsplit则表示最多分割maxsplit次,否则表示没有分割次数限制,直到字符串结束。

>>> s1 = "i love python">>> s1.split()['i', 'love', 'python']>>> s1.split() #默认使用空白符进行分割['i', 'love', 'python']>>> 
>>> s1 = "E:/workspace/python/code" #这是windows上的一个文件夹目录>>> s1.split("/") #现在要获取每一级的目录名,则可以用字符串'/'进行分割['E:', 'workspace', 'python', 'code']>>> s1.split("/",1) #分割1次['E:', 'workspace/python/code']>>> 

2、str.join(iterable)

功能:将可迭代对象(如字符串、元组、列表)中的字符串元素以指定的字符(连接符)连接生成一个新的字符串。

具体一点:'sep'.join(iterable);sep表示连接符,iterable表示被连接符连接的可迭代对象,可迭代对象的元素必须为字符串。

>>> s1 = ['i', 'love', 'python']>>> " ".join(s1) #指定空格作为连接符'i love python'>>> s1 = ['E:', 'workspace', 'python', 'code']>>> "/".join(s1) #指定"/"作为连接符'E:/workspace/python/code'>>> 
09 字符串的切片

字符串切片其实就是根据一定取值规则,取字符串中取特定位置的元素组合成新的字符串。

1、定义

str[起始索引:结束索引:步长]

起始索引:表示切片的起始元素索引,也就是切片的第一个元素索引(默认为0)。

结束索引:表示切片的结束索引,切片结果不包括此索引对应的元素。(默认为列表长度)。

步长:表示相邻2个元素索引的差值。(默认为1)。

取值过程如下:

第一个元素:str[起始索引];

第2个元素:str [起始索引+步长];  其中(起始索引+步长) < 结束索引;

第n个元素:str [第n-1个元素的索引+步长] ,其中(第n-1个元素的索引+步长) < 结束索引;

2、若步长使用默认值1,可以不用第3个参数,定义时简化为str[起始索引:结束索引];

>>> s1 = "hi,python!">>> s1[0:2] #切片字符串不包括结束索引的元素'hi'>>> s1[:2] #不指定起始索引时,默认为0'hi'>>> s1[3:] #不指定结束索引时,默认为字符串的长度'python!'>>> s1[3:-1] #索引还可以使用负向索引'python'>>> 

3、三个参数都用,str[起始索引:结束索引:步长];

>>> s1 = "h i , p y t h o n">>> s1[0:len(s1):2] #指定步长去掉空格'hi,python'>>> s1[0::2] # 当结束索引为整个字符长度时,可以省略不写,但冒号必须有'hi,python'>>> s1[::2] # 还可以前2个索引都省略,只写步长,但冒号必须有'hi,python'>>> 

4、特殊用法;

>>> s1 = "123456789">>> s1[:] #切片取整个字符串'123456789'>>> s1[::2] #从开始位置开始,每隔一个字符取一个'13579'>>> s1[-2:] #取字符串的最后2个字符'89'>>> s1[::-1] #字符串逆序'987654321'>>> s1[-1::-1] #字符串逆序的另一种写法'987654321'>>> 
10 字符串的格式化

1、%操作符的方式

语法: '%格式化字符'%exp

参数

  • 格式化字符:用于指定占位值的类型,用于占位,然后在exp中指定值。

  • 如果指定多个格式化多个值,则exp使用元组的形式指定值。

>>> s1 = "我的岗位: %s"%"高级Python Web开发工程师">>> print(s1)我的岗位: 高级Python Web开发工程师>>> 
>>> s1 = "恭喜%s:\n\t拿到Python高薪岗位\n\t薪资:%d元"%("小刘",30000)>>> print(s1)恭喜小刘:    拿到Python高薪岗位    薪资:30000元>>> 

常用格式化字符有:

  • %% 百分号标记 #就是输出一个%

  • %c 字符及其ASCII码

  • %s 字符串

  • %d 有符号整数(十进制)

  • %u 无符号整数(十进制)

  • %o 无符号整数(八进制)

  • %x 无符号整数(十六进制)

  • %X 无符号整数(十六进制大写字符)

  • %e 浮点数字(科学计数法)

  • %E 浮点数字(科学计数法,用E代替e)

  • %f 浮点数字(用小数点符号)

  • %g 浮点数字(根据值的大小采用%e或%f)

  • %G 浮点数字(类似于%g)

  • %p 指针(用十六进制打印值的内存地址)

2、str.format()方式、

1)使用{}按顺序填充参数;

>>> s1 = "欢迎{}入职{}岗位".format("小刘","高级Python Web") #占位符{}会依次被format函数中的参数替换>>> print(s1)欢迎小刘入职高级Python Web岗位>>> 

2)使用{参数索引}按参数索引号填充参数;

参数索引不受顺序约束,只要format里有相对应的参数值即可,参数索引从0开始。

>>> s1 = "欢迎{0}入职{1}岗位".format("小刘","高级Python Web") #占位符{索引}会按索引号取format函数中的对应参数位置的参数>>> print(s1)欢迎小刘入职高级Python Web岗位>>> 
>>> s1 = "欢迎{0}入职xxx公司,{0}的岗位是:{1}".format("小刘","高级Python Web") #索引号可以重复用,很方便参数的复用>>> print(s1)欢迎小刘入职xxx公司,小刘的岗位是:高级Python Web>>> 

3)使用{参数名称}按参数名称填充参数

类似于使用字典key值占位,将字典作为参数传入字符串。

>>> s1 = "欢迎{name}入职{job}岗位".format(name="小刘",job="高级Python Web") #占位符{参数名}会根据format函数中的命名参数取对应的参数值>>> print(s1)欢迎小刘入职高级Python Web岗位>>> 
>>> params = {"name":"小刘","job":"高级Python Web"}>>> s1 = "欢迎{name}入职{job}岗位".format(**params) #如果参数名是在一个字典变量中,则可以用这种方式使用字典参数>>> print(s1)欢迎小刘入职高级Python Web岗位>>> 

3、f-string方式

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:

f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

>>> name = "小刘">>> job = "Python web">>> s1 = f"欢迎{name}入职{job}岗位">>> print(s1)欢迎小刘入职Python web岗位>>> s1 = f"欢迎{name}入职xxx公司,{name}的岗位是:{job}">>> print(s1)欢迎小刘入职xxx公司,小刘的岗位是:Python web>>> 
使用时若是忘记了,直接在python自带的ide中使用下面的命令查询即可。

1)dir(str);

查询字符串有哪些函数可以使用。

2)help(str);

查询字符串的使用文档。

3)help(函数),如:help(str.strip);

查询某个具体函数的使用说明。

更多Python精彩文章、新手学习干货,欢迎一起交流学习!

END b3c6bb16536191050641749798c810f8.gif 扫码关注我们 898a9f2b82cdc88bf7c190823e7e47b1.png 专业提供 定制学习计划和职业规划服务 公众号:Python编程研习社 b3c6bb16536191050641749798c810f8.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值