目录:
一、字符串(string)
(一)字符串格式化常用的几种格式
1.%-formatting
2.format格式化输出语法
3.string.Template
4.f-string
(二)字符串常用方法
Python相关博客推荐
一、字符串(string)
在Python中,字符串属于不可变序列,使用单引号、双引号、三引号或者三双引号作为界定符来表示字符串(不同界定符之间可以互相嵌套使用)。
字符串支持序列通用方法(双向索引、比较大小、长度计算、元素访问、切片等)和特有的方法(字符串格式化、字符串查找、字符串替换等);字符串为不可变序列不支持原地操作,但可以返回一个操作后的新的字符串作为结果以此实现字符串的“可变”操作。
表一:常见转义字符
转义字符 | 含义 |
---|---|
\b | 退格,把光标移动到前一列的位置 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ | 一个\ |
’ | 单引号 |
‘’ | 双引号 |
\ooo | 3位八进制数对应的字符 |
\xhh | 2位十六进制数对应的字符 |
\uhhhh | 4位十六进制数表示的Unicode字符 |
如:转义字符的效果
>>>print('hello\nworld') #换行符
hello
world
>>>print('\101') #三位八进制数对应的字符
A
>>>print('\x41') #两位十六进制数对应的字符
A
(一)字符串格式化常用的几种格式
1.%-formatting
'% [-] [+] [0] [m ] [.n ] 格式字符 '% x
[-]-------------指定左对齐输出
[+]------------对正数加正号
[0]----------指定空位填0
[m ]----------指定最小宽度
[.n ] --------指定精度
格式字符-------指定类型
x-----------待转换的表达式
格式字符
格式字符 | 说明 |
---|---|
%s | 字符串(采用str()的显示) |
%r | 字符串(采用repr()的显示) |
%c | 单个字符 |
%b | 二进制整数 |
%d | 十进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数(基底写为e) |
%E | 指数(基底写为E) |
%f、%F | 浮点数 |
%g | 指数(e)或浮点数(根据显示长度) |
%G | 指数(E)或浮点数(根据长度显示) |
%% | 字符% |
>>>x=12345
>>>f1="%e"%x
'1.234500e+0.3'
>>>f2="%s"%x #等价于str()
'12345'
>>>f3="%d,%c"%(65,65) #使用元组对字符串进行格式化,按位置对应进行
'65,A'
2.format格式化输出语法
语法格式:
<模板字符串>.format(<逗号分隔的参数>)
>>>'my name is{0},{0} is {1} years old.'.format('xk',22)
'my name is xk,xk is 22 years old'.
>>>'{}{}{}'.format('bloger','is','gorgeous!')
'bloger is gorgeous!'
模板字符串除了参数序号还可以包括格式控制信息:
{<参数序号/参数名>:<格式控制信息(格式为:<填充><对齐><宽度><,><.精度><类型>)>}
<填充> | <对齐 > | <宽度> | <.精度> | <类别> | , |
---|---|---|---|---|---|
用于填充的单个字符 | <(左对齐),>(右对齐),^(居中对齐) | 槽的设定输出宽度 | 浮点数小数部分精度或者字符串的最大输出长度 | 整数类型/浮点数类型 | 数字的千分位分隔符,适用于整数和浮点数 |
实际长度大于设定长度时,以实际长度为准;实际长度小于设定长度时默认以空格字符补充 | 表示在指定宽度内的输出时的对齐方式 | 通过<填充>设定,默认为空格 | 以“.”开头,对于浮点数表示小数部分的精度,对于字符串表示最大输出长度 |
>>>'{0:*^10}'.format('python') #居中对齐输出10位,以*填充
'**python**'
>>>'{0:1}'.format('python') #指定长度小于字符串实际长度,以实际长度为准
'python'
数据格式控制:
更多格式控制大家自己在码程序时多加尝试练习,毕竟纸上得来终觉浅!
3.string.Template
用string模块里面提供的Template类进行传参,但其语法过于复杂与Python所追求的简便快捷相违背,用之较少。
4.f-string
f-string功能上不逊色与以上几种格式化方法并且更加方便简洁,Python3.6及以上版本推荐使用f-string格式
#语法格式:f’…’/F’…'
(1){ }内表示被替换的字段,{ }内可以填入表达式或者调用函数,编译时会自动执行并返回结果
(2){ }内外用的界定符不允许冲突(大括号内用单引号时一般会与外部的界定符冲突,可灵活使用双引号、三引号切换)
(3){ }外部可以用\进行转义,其内部不允许使用转义字符(事实上大括号内部根本不允许出现’‘字符,如果避免不了时也只能用变量表示’'字符)
(4)要显示大括号时用大括号对大括号进行转义({{ 表示{,}}表示})
(5)f-string多行显示
>>> name = 'xk'
>>> age = 22
>>> f"Hello!" \
... f"I'm {name}." \
... f"I'm {age}."
"Hello!I'm xk.I'm 22."
>>> f"""Hello!
... I'm {name}.
... I'm {age}."""
"Hello!\n I'm xk.\n I'm 22."
(6)f-string的自定义格式控制
f-string采用{content:format}的形式来实现格式控制,采用默认格式时例如上面一样只需要{content}部分即可,格式部分可省略。
(二)字符串常用方法
方法 | 说明 |
---|---|
find() /rfind() | 查找返回一个字符串在另一个字符串中指定范围内(默认整个字符串)第一次出现/最后一次出现的位置, 如果不存在则返回-1 |
index() /rindex() | 返回一个字符串在另一个字符串指定范围内首次出现/最后一次出现的位置,如果不存在则抛出异常 |
count() | 返回一个字符串在另一个字符串中出现的次数,如果不存在则返回0 |
split()/ | rsplit() |
partition()/rpartition() | 以指定的字符串(第一次/最后一次出现的位置)为分隔符,将原字符串分隔为三部分:前面部分、分隔字符串、后面部分,如果指定的分隔符不存在则返回原字符串和两个空字符串 |
join() | 用来将列表中的多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回一个连接后的字符串 |
lower() /upper() | 转换为小写 /大写 |
capitalize() | 字符串首字母转换为大写 |
title() | 每个单词首字母转换为大写 |
swapcase() | 大小写转换 |
repalce() | 查找替换,每次只能指定替换一个字符或字符串。此方法不修改原字符串而是返回一个新的字符串 |
translate() | 按映射表中定义的对应关系转换字符串并替换其中的字符,常与maketrans()方法组合使用 |
strip() /rstrip() / lstrip() | 删除字符串两端/右端/左端连续的空白字符或指定字符 |
eval() | 内置函数eval()用来把任意字符串转化为Python表达式并进行求值运算 |
center() /ljust() /rjust() | 原字符居中、左对齐、右对齐后返回指定宽度的新字符串,指定字符串对超出部分填充(默认空格) |
zfill() | 返回指定宽度的字符串,在左侧以字符0进行填充 |
startswith()/endswith() | 判断字符串是否以指定字符串开始/结束。可以接收两个整数参数限定字符串检测范围 |
isalnum()/isalpha()/isdigit()/isdecimal()/isnumeric()/isspace()/isupper()/islower()----检测字符串是否为数字/字母/数字/十进制数/数字字符/空白字符/大写字母/小写字母
注1:
1.运算符“+”也可以用于连接字符串,但涉及大量数据的复制,效率低,不适合大量长字符串的连接,join()方法效率很高。
2.在Python中字符串属于不可变对象,不支持原地修改,如果需要修改其中的值只能重新创建一个新的字符串对象。
3.Python标准库textwrap提供了排版函数
4.切片也适用于字符串,但仅限于读取其中的元素,不支持字符串修改
注2:
部分灵感源于清华大学董付国老师及其编著的《Python可以这样学》,特别感谢!
以及csdn多位优秀博主的博客,非常感谢!