python掌握字符串只需这一篇就够了
目录
- 四大前缀
- 大小写转化
- 空格调整函数
- 删除部分字符
- 字符串判定
- 字符串查找
- 分割、合并和替换
- format格式化
- format_map
四大前缀
除了普通的字符串,python在字符串前面可以有4个前缀,即frub。其中,f字符串可将{}中的变量转为字符串;r表示取消转义;u表示使用Unicode字符;b表示采用byte类型。
前二者最常用,示例如下
>>> f"1+1={1+1}" #f字符串
'1+1=2'
>>> r"C:\abc\def" #r字符串取消转义
'C:\\abc\\def'
大小写转化
| 大小写转化 | 说明 | 示例 | 结果 |
|---|---|---|---|
| capitalize() | 首字母转大写 | 'i love u'.capitalize() |
‘I love u' |
| upper() | 所有字母转大写 | 'I love u'.upper() |
‘I LOVE U' |
| lower() | 所有字母转小写 | 'I LOVE U'.lower() |
‘i love u' |
| title() | 单词首字母大写 | 'i love u'.title() |
‘I Love U' |
| swapcase() | 大小写翻转 | 'I Love U'.swapcase() |
‘i lOVE u' |
| casefold() | 超级大写转小写 | 'Γ'.casefold() |
‘γ' |
空格调整函数
其中输入w表示将字符长度调整为w,如未作说明,则其余位置补充为空格。
| 空格调整 | 说明 | 示例 | 结果 |
|---|---|---|---|
| center(w) | 调整后原字符串居中 | 'Love'.center(6) |
' Love ' |
| ljust(w) | 调整后原字符串居左 | 'Love'.ljust(6) |
'Love ' |
| rjust(w) | 调整后原字符串居右 | 'Love'.rjust(6) |
' Love' |
| zfill(w) | 在左侧补0 | '123'.zfill(6) |
‘000123' |
| expandtabs(w) | 将tab转为w个空格 |
'\ta'.expandtabs(4) |
' a' |
删除部分字符
s为字符串,如果为空则默认为空格。
| lstrip(s) | 自左删除s中的字符 |
'ILoveU'.lstrip('ILU') |
‘oveU' |
| rstrip(s) | 自右删除s中的字符 |
'\tLove\t'.rstrip() |
‘\tLove' |
| strip(s) | 执行lstrip(s)和rstrip(s) | '\tLove\t'.strip() |
‘Love' |
| removeprefix(s) | 自左删除s |
'ILoveU'.removeprefix('ILU') |
‘ILoveU' |
| removesuffix(s) | 自右删除s |
'ILoveU'.removesuffix('eU') |
‘ILov' |
字符串判定
| 返回True的条件 | 示例 | 返回值 | |
|---|---|---|---|
| isalnum() | 只包含字母或数字 | 'abc1'.isalnum() |
True |
| isalpha() | 只含字母 | 'abc1'.isalpha() |
False |
| isdecimal() | 只包含十进制数字 | '123A'.isdecimal() |
False |
| isdigit() | 只含数字 | '123A'.isdecimal() |
False |
| islower() | 包含字母,且均为小写 | 'abc1'.islower() |
True |
| isupper() | 包含字母,且均为大写 | '123'.isupper() |
False |
| isnumeric() | 只包含数字字符 | '四五'.isnumeric() |
True |
| isspace() | 只含空格 | 'asd'.isspace() |
False |
| istitle() | 首字母均大写 | 'I Love U'.istitle() |
True |
| isascii() | 均为ASCII码 | '四'.isascii() |
False |
| isidentifier() | 可用作python标识符 | '1asd'.isidentifier() |
False |
| isprintable() | 均为可打印字符 | chr(1).isprintable() |
False |
字符串查找
下面的函数均有三个输入参数,str表示待匹配字符串,beg和end分别表示开头和结尾,默认为0和被匹配字符串的长度。以s.count(str, beg, end)为例,表示s[beg:end]中str出现的次数。
s.count(str, beg, end) |
str出现的次数 |
s.find(str, beg, end) |
str首次出现的位置,如未找到则返回-1 |
s.rfind(str, beg, end) |
str最后出现的位置,如未找到则返回-1 |
s.index(str, beg, end) |
和find相同,但未找到会报错 |
s.rindex(str, beg, end) |
和rfind相同,但未找到会报错 |
s.startswith(str, beg, end) |
若以str开头,则返回True |
s.endswith(str, beg, end) |
若以str结尾,则返回True |
分割、合并和替换
s.split(str, num) |
将s按照str进行分割,若指定num,则分割为num+1段 |
s.rsplit(str, num) |
和split相同,但从右向左开始匹配 |
s.splitlines([keepends]) |
按行分割,若指定keepends为False,则不保留换行符 |
s.join(seq) |
以s为分隔符,将seq中的字符串组合在一起 |
s.partition(str) |
将s分成三份,str左边,str和str右边 |
s.rpartition(str) |
和partition相同,但从右边开始 |
s.replace(s1, s2, num) |
将s中的s1换成s2,若指定num,则替换不超过num次 |
除了replace,还可以通过translate来进行替换,区别在于translate输入的是maketrans建立的替换表。
>>> trans = ''.maketrans('I',"我")
>>> "I Love U".translate(trans)
'我 Love U'
format格式化
format可将标识符{}替换为元组中的值,如果{}中未指定序号,则顺序替代。
'{} Love {}'.format('I','U')
'I Love U'
如果{}中指定了序号,则按照序号的顺序替代
>>> '{0} Love {1}, {1} Love {0}'.format('I','U')
'I Love U, U Love I' #最近被蜜雪冰城洗脑了。。。
当然,和C语言一样,这种格式化用于数字转化的情况多一些,python中通过:来声明数字转化为字符串之后的格式
其中,
^, <, >分别表示居中、左对齐、右对齐+表示在正数前显示+,负数前显示 -b、d、o、x分别是二进制、十进制、八进制、十六进制
具体示例如下
>>> from math import pi
| 输入 | 输出 | 描述 |
|---|---|---|
'{:.2f}'.format(pi) |
‘3.14' | 保留两位小数,四舍五入 |
'{:.2%}'.format(pi) |
‘314.16%' | 保留两位小数的百分数 |
'{:+.2f}'.format(1) |
‘+1.00' | 保留两位小数,带符号 |
'{:0>5d}'.format(1) |
‘00001' | 左侧补0,宽度为5 |
'{:>5d}'.format(1) |
‘01' | 左侧补空格,宽度为5 |
'{:x<5d}'.format(1) |
‘1xxxx' | 右侧补x,宽度为5 |
'{:-^5d}'.format(1) |
‘–1--' | 两侧补-,宽度为5 |
'{:,}'.format(1e5) |
‘100,000.0' | 逗号分隔 |
'{:.2e}'.format(1e5) |
‘1.00e+05' | 科学计数法 |
'{:b}'.format(8) |
‘1000' | 二进制 |
format_map
format的输入为一个字符串元组,将元组中的字符串根据索引替代字符串中的{},而format_map则直接用字典来进行格式化。
例如用元组可以做到
>>> '{} Love {}'.format("阿珍","阿强")
'阿珍 Love 阿强'
而用字典,则可以这样写
>>> '{A} Love {B}'.format_map({"A":"阿珍","B":"阿强"})
'阿珍 Love 阿强'
从而使得代码更加清晰。
到此这篇关于python掌握字符串只需这一篇就够了的文章就介绍到这了,更多相关python 字符串 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)
