Python基础(二):字符串方法总结
字符串方法
字符串拼接#
直接通过(+)操作拼接#
print('hello'+' '+'world'+'!')
> hello world!
使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。
通过str.join()方法拼接#
str_list = ['hello', ' ', 'world', '!']
print(''.join(str_list))
> hello world!
这种方式一般用在列表转字符串,''.join其中''可以是空字符,也可以是任意字符,当时任意字符时,列表中字符串会被该字符隔开。
str_list = ['hello', ' ', 'world', '!']
print(':'.join(str_list))
> hello: :world:!
通过str.format()方法拼接#
print('{} {}!'.format('hello', 'world'))
> hello world!
通过这种方式拼接字符串需要注意的是字符串中{}的数量要和format方法参数数量一致,否则会报错
通过(%)操作符拼接#
print('测试 %s' % 'Hello')
print('测试 %s 测试 %s' % ('hello', 'world'))
> 测试 Hello
> 测试 hello 测试 world
也用于格式化字符串,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
常见的占位符:
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
如果不确定用什么,%s
永远起作用,它会把任何数据类型转换为字符串
有时候字符串里面的%是一个普通字符,就需要转义,用%%
来表示一个%
:
print('growth rate: %d %%' % 7)
通过()多行拼接#
print(
'hello'
' '
'world'
'!'
)
> hello world!
python遇到未闭合的小括号,自动将多行拼接为一行。
通过string 模块中的Template对象拼接#
from string import Template
s = Template('${s1} ${s2}')
t = s.safe_substitute(s1='hello', s2='world')
print(t)
> hello world
Template的实现方式是首先通过Template初始化一个字符串。这些字符串中包含了一个个key。通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。这种方式的好处是不需要担心参数不一致引发异常
通过F-strings拼接#
s1 = 'hello'
s2 = 'world'
s3 = f'{s1} {s2}!'
print(s3)
> hello world!
在python3.6.2版本中,PEP 498 提出一种新型字符串格式化机制,被称为“字符串插值”或者更常见的一种称呼是F-strings,F-strings提供了一种明确且方便的方式将python表达式嵌入到字符串中来进行格式化
而且F-strings的运行速度很快,比%-string和str.format()这两种格式化方法都快得多。
在F-strings中我们也可以执行函数:
def power(x):
return x * x
x = 5
print(f'{x}*{x}={power(x)}')
字符串的格式化#
通过(%)操作符#
print('测试 %s' % 'Hello')
print('测试 %s 测试 %s' % ('hello', 'world'))
> 测试 Hello
> 测试 hello 测试 world
也用于格式化字符串,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
常见的占位符:
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
如果不确定用什么,%s
永远起作用,它会把任何数据类型转换为字符串
有时候字符串里面的%是一个普通字符,就需要转义,用%%
来表示一个%
:
print('growth rate: %d %%' % 7)
通过format()方法#
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))
使用字符串的format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}
……,不过这种方式写起来比%要麻烦得多:
字符串其他方法#
字符串替换#
str.replace(old, new[, max])
- old -- 将被替换的子字符串。
- new -- 新字符串,用于替换old子字符串。
- max -- 可选字符串, 替换不超过 max 次
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。
s = 'abc'
print(s.replace('abc', 'e', 1))
> e
find 、index、rfind、rindex#
-
find:检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
-
index:检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
-
rfind:类似于find()函数,只不过是从字符串右边开始查找。
-
rindex:类似于index()函数,只不过是从字符串右边开始查找。
str1.find(str2, beg=0, end=len(str1))
str1.index(str2, beg=0, end=len(str1))
- str1 -- 指定检索的字符串
- str2 -- 要查找的子字符串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。
str1 = '0123456'
str2 = '23'
print(str1.find(str2))
print(str1.find(str2, 0))
print(str1.find(str2, 3))
print(str1.find(str2, 0, len(str1)))
> 2
> 2
> -1
> 2
用index方法,字符串中不包含要查找的子字符串
str1 = '0123456'
str2 = '23'
print(str1.index(str2,3))
> Traceback (most recent call last):
> File "E:/python_ide/dc_test/test7.py", > > line 57, in <module>
> print(str1.index(str2,3))
> ValueError: substring not found
count#
统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
str.count(sub, start= 0, end=len(string))
- sub -- 搜索的子字符串
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
- 该方法返回子字符串在字符串中出现的次数。没有则返回0
str1 = '0123456'
print(str1.count('1'))
print(str1.count('1', 0))
print(str1.count('1', 0, len(str1)))
print(str1.count('1', 2, 3))
> 1
> 1
> 1
> 0
isalpha、isdigit、isalnum、isspace#
- isalpha:检测字符串是否只由字母组成。
- isdigit:检测字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。
- isalnum:检测字符串是否由字母和数字组成。
- isspace:检测字符串是否只由空格组成。
str.isalpha()
str.isdigit()
str.isalnum()
str.isspace()
str1 = '0123456'
str2 = 'ABCDE'
str3 = 'AB123'
str4 = ' '
print(str1.isdigit())
print(str2.isalpha())
print(str3.isalnum())
print(str4.isspace())
> True
> True
> True
> True
isupper、islower#
- isupper: 检测字符串中所有的字母是否都为大写。如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
str.isupper()
str = "THIS IS STRING EXAMPLE....WOW!!!"
print (str.isupper())
str = "THIS is string example....wow!!!"
print (str.isupper())
> True
> False
- islower:检测字符串是否由小写字母组成。如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
str.islower()
str = "RUNOOB example....wow!!!"
print(str.islower())
str = "runoob example....wow!!!"
print(str.islower())
> False
> True
startswith、endswith#
- startswith:检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
str.startswith(substr, beg=0,end=len(str))
- str -- 检测的字符串。
- substr -- 指定的子字符串。
- strbeg -- 可选参数用于设置字符串检测的起始位置。
- strend -- 可选参数用于设置字符串检测的结束位置。
str = "this is string example....wow!!!"
print (str.startswith( 'this' )) # 字符串是否以 this 开头
print (str.startswith( 'string', 8 )) # 从第八个字符开始的字符串是否以 string 开头
print (str.startswith( 'this', 2, 4 )) # 从第2个字符开始到第四个字符结束的字符串是否以 this 开头
> True
> True
> False
- endswith:判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 "start" 与 "end" 为检索字符串的开始与结束位置。
str.endswith(suffix[, start[, end]])
- suffix -- 该参数可以是一个字符串或者是一个元素。
- start -- 字符串中的开始位置。
- end -- 字符中结束位置。
Str='Runoob example....wow!!!'
suffix='!!'
print (Str.endswith(suffix))
print (Str.endswith(suffix,20))
suffix='run'
print (Str.endswith(suffix))
print (Str.endswith(suffix, 0, 19))
> True
> True
> False
> False
upper、lower、title、capitalize、swapcase#
- lower:将字符串中的大写字母转为小写字母。
- upper:将字符串中的小写字母转为大写字母。
- title:将所有单词首字母转为大写,其余字母均转为小写。
- capitalize:将字符串的第一个字母转为大写,其他字母转为小写。
- swapcase:将字符串做大小写字母转换(大写->小写,小写->大写)
str.lower()
str.upper()
str.title()
str.capitalize()
str.swapcase()
>>> 'aBcDe'.upper()
'ABCDE'
>>> 'aBcDe'.lower()
'abcde'
>>> 'thIs is a exaMple'.title()
'This Is A Example'
>>> 'this is A example'.capitalize()
'This is a example'
>>> 'aBcDe'.swapcase()
'AbCdE'
strip、lstrip、rstrip#
- strip(): 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。只能删除开头或是结尾的字符,不能删除中间部分的字符。
- lstrip() :方法用于截掉字符串左边的空格或指定字符。
- rstrip(): 删除 string 字符串末尾的指定字符(默认为空格).
str.strip([chars])
str.lstrip([chars])
str.rstrip([chars])
>>> ' abc '.strip()
'abc'
>>> ' abc'.lstrip()
'abc'
>>> 'abc '.rstrip()
'abc'
>>> 'abc'.strip('a')
'bc'
>>> 'abc'.lstrip('a')
'bc'
>>> 'abc'.rstrip('c')
'ab'
>>> 'abc@163.com'.strip('cawm')
'bc@163.co'
>>> 'abc@163.com'.lstrip('cawm')
'bc@163.com'
>>> 'abc@163.com'.rstrip('cawm')
'abc@163.co'
split、splitlines、partition、rpartition#
-
split:指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串。
-
splitlines:按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
-
partition:根据指定的分隔符将字符串进行分割。如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
-
rpartition:类似于partition()函数,只不过是从右边开始。
str.split(str="", num=string.count(str))
- str -- 分隔符,以它为界分割。默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数。默认为 -1, 即分隔所有。
str = "this is string example....wow!!!"
print (str.split( )) # 以空格为分隔符
print (str.split('i',1)) # 以 i 为分隔符
print (str.split('w')) # 以 w 为分隔符
['this', 'is', 'string', 'example....wow!!!']
['th', 's is string example....wow!!!']
['this is string example....', 'o', '!!!']
str.splitlines([keepends])
- keepends -- 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
str.partition(str)
- str-- 指定的分隔符。
str.rpartition(str)
>>> 'www.example.com'.partition('.')
('www', '.', 'example.com')
>>> 'www.example.com'.rpartition('.')
('www.example', '.', 'com')
填充ljust、center、rjust#
-
ljust:返回一个指定的宽度 width 居左的字符串,fillchar 为填充的字符,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。
-
center:返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。
-
rjust:返回一个指定的宽度 width 居右的字符串,fillchar 为填充的字符,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。
str.ljust(width[, fillchar])
str.center(width[, fillchar])
str.rjust(width[, fillchar])
- width -- 字符串的总宽度。
- fillchar -- 填充字符。
>>> '[www.example.com]'.ljust(30, '*')
'[www.example.com]*************'
>>> '[www.example.com]'.rjust(30, '*')
'*************[www.example.com]'
>>> '[www.example.com]'.center(30, '*')
'******[www.example.com]*******'
>>> '[www.example.com]'.center(4, '*')
'[www.example.com]'
作者: 是小鱼呀
出处:https://www.cnblogs.com/sophia12138/p/15890075.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律