目录
- 前言
- 一.字符串函数
- 二.操作函数
- 三.格式化函数
- 1.基本的使用
- 2.带有参数的格式化
前言
上一篇文章我们讲了字符串的基本概念和基本的操作,这一篇文章讲下这个常用的字符串函数与格式化输出,这两点都挺重要的,在处理字符串上用的也挺多的
一.字符串函数
我把函数分为三类,第一类是转换为字符串类型与返回单个字符,第二类返回对应的进制数,第三类返回字符串长度与单字符对应的编码
下面我用表格分别表示出来
1.第一类
函数 | 功能 |
str(<参数>) | 返回任意数据类型的字符串形式 |
chr(<参数>) | 返回Unicode编码对应的字符 |
2.第二类
函数 | 功能 |
hex(<整数类型>) | 返回整数对应的十六进制形式的字符串 |
oct(<整数类型>) | 返回整数对应的八进制形式的字符串 |
3.第三类
函数 | 功能 |
len(<字符串类型>) | 返回字符串的长度(字符串有多少个字符,也能组合数据类型的长度) |
ord(<字符类型>) | 返回单个字符对应的Unicode编码(以十进制形式) |
我们可以看到这些字符串函数都有一个函数的基本特点,都会有函数返回值,这是因为我们给的参数经过函数内部处理完成后返回的一个结果
1.第一类
str()作用是把任意数据类型转换为字符串形式,可以理解为在开头和结尾两端加上引号
print(str(123))
print(str(3.14))
print(str(2.2+8.1j))
print(str((1,'s',3,4)))
print(str(['q',2,'e'] ))
输出本来是没有单引号框起来,但是为了区分这是字符串
'123'
'3.14'
'(2.2+8.1j)'
'(1,'s',3,4)'
'['q',2,'e']'
chr()返回Unicode编码对应的单字符,Unicode编码中已经包含了其他常用的编码类型,如:ASCII
print(chr(36))
print(chr(10004))
print(chr(9801))
输出
$
✔
♉
2.第二类
hex()和oct()分别返回整数类型对应的十六进制和八进制
print(hex(64))
print(oct(100))
输出
0x40
0o144
3.第三类
len()和ord()分别返回字符串的长度和单个字符对应的Unicode编码(以十进制形式)
print(len("abcd efgh"))
print(ord('♉'))
输出
9
9801
二.操作函数
之前讲到的所涉及到的只是单纯的函数,而这里要讲的是面向对象中的方法实现的,功能更加的多,更加的强大
这里也是按照顺序列出常用的方法
4.第四类
函数 | 功能 |
str.lower() | 返回全部字符小写的字符串 |
str.upper() | 返回全部字符大写的字符串 |
str.split(sep=None,maxsplit=-1) | 返回一个列表,由字符串str根据sep参数分隔,默认以空格分隔 |
str.count(sub[,start[,end]]) | 返回str[start:end]中子字符串sub出现的次数 |
5.第五类
函数 | 功能 |
str.replace(old,new[,count]) | 返回新字符串,把所有old子字符串被替换成new子串,如果给出count,则是前count次数old子串被替换 |
str.center(width,[fillchar]) | 字符串居中函数,返回长度为width的字符串,空白位置用fillchar字符填充,默认空格填充 |
6.第六类
函数 | 功能 |
str.strip([chars]) | 返回新字符串,移除字符串头尾指定的字符(默认为空格)或字符序列 |
str.join(iterable) | 返回新字符串,将序列iterable中的元素以指定的字符连接生成一个新的字符串(序列类型后面再讲到) |
下面给出简单的实例:
4.第四类
str.lower()、str.upper():分别使得每个字符变为小写、大写
str.split(sep=None,maxsplit=-1):通过sep字符分隔开str形成列表类型,此时列表内每个元素都是字符
str.count(sub[,start[,end]]):计子串sub出现的次数,str[start:end]区间内
str1="ABcd"
print(str1.lower())
print(str1.upper())
str2="a-b-1-2"
print(str2.split('-'))
str3="12a12d12"
print(str3.count("12"))
print(str3.count("12",0,5))
输出
abcd
ABCD
['a', 'b', '1', '2']
3
2
5.第五类
str.replace(old,new[,count]):old子串被new子串替换,前面出现count次的都被替换
str.center(width,[fillchar]):以宽度width居中,用fillchar字符填充
str1="python is good "
print(str1.replace(' ','-'))
print(str1.replace(' ','-',2))
str2 = "python"
print(str2.center(10))
print(str2.center(10,'-'))
输出
python-is-good-
python-is-good
python
--python--
6.第六类
str.strip([chars]):移除首尾出现的字符或字符串chars,将不在按照字符的序号
str.join(iterable):将字符串或字符str加入到序列类型的每个元素的后面,生成新的字符串
str1="-*py*-"
print(str1.strip('-*'))
str2='-'
tup=('1','2','3','4')
li=['a','b','c','4']
print(str2.join(tup))
print(str2.join(li))
输出
py
1-2-3-4
a-b-c-4
三.格式化函数
1.基本的使用
前面讲到的仅仅只是函数与方法,这些都是在处理字符串过程中会运用到的,格式化函数format()一般用在print()函数里面,这是针对字符串对象使用的方法,使得字符串输出的格式不一样的。
基本的格式为:<字符串模板>.format(<逗号分隔的参数>),参数可以是各种数据类型,包括整形、浮点型、复数、字符串、列表和元组
这里是以字符串为对象,但是以format()里面的参数对应的是字符串里的槽,用大括号{}来表示槽,参数按照序号关系替换到槽中
print("Python{}是{}语言和{}编程方式".format("语言","解释型","面向对象"))
输出
'Python语言是解释型语言和面向对象编程方式'
如果大括号里指明了参数的序号,则按照序号对应参数替换
print("Python{1}是{2}语言和{0}编程方式".format("面向对象","语言","解释型"))
输出
'Python语言是解释型语言和面向对象编程方式'
当要打印大括号时,需要连续输入两次{{,}}这样才不会报错
s="}}ab{}{{"
print(s.format("1"))
输出
'}ab1{'
2.带有参数的格式化
format()方法中的<字符串模板>的槽除了包括参数序号,也能加入一些参数达到更多的格式输出,每个参数在引号(:)后面用逗号进行分隔并且按照表格里的顺序,参数的序号在引号:前面
槽的基本格式为:{<参数序号>:<格式控制标记符>}
列出基本的格式控制标记符
: | <填充字符> | <对齐方式> | <宽度设置> | <,>逗号 | <.精度> | <数据类型> |
引导符号 | 用于填充的单个字符 | 左对齐< 居中对齐^ 右对齐> | 设置字符串的输出宽度 | 数字的千位分隔符适用于整数和浮点数 | 浮点数的小数点后的位数,字符串的最大输出长度 | 转换输出的数据类型,包括XXX进制,浮点数的几种格式 |
认真的思考就能发现<填充字符>、<对齐方式>、<宽度设置>和英文输入法<,>、<.精度>、<数据类型>可以分成两类来说明,第一类是改变字符输出的格式,第二类是改变数据的输出格式
(1).第一类
<填充字符>指在设置了字符串的输出宽度后剩余的空白位置用什么字符填充,默认是空格填充
<对齐方式>左对齐<、右对齐>与居中对齐^
<宽度设置>参数填入槽后输出字符串的长度,宽度设置的位数小于实际参数位数,则不改变宽度并且输出原来的参数
s="Python"
#<宽度设置>为10,默认<左对齐>
print("{0:10}".format(s))
#<右对齐>
print("{0:>10}".format(s))
#<居中>并且使用*<填充>
print("{0:*^10}".format(s))
输出
Python
Python
**Python**
(2).第二类
<,>逗号用来显示数字类型的千位分隔符(,)
#<,>逗号,数字千位分隔符
print("{:,}".format(12345678))
print("{:,}".format(12345.67))
输出
12,345,678
12,345.67
<.精度>这里点(.)和精度是两个都要设置,例如:.2、.4等等,不能直接是点.
<数据类型>用于改变输出整数和浮点数类型的格式
整数输出格式
b:输出二进制方式
c:输出对应的Unicode字符
d:输出十进制方式
o:输出八进制方式
x:输出小写十六进制方式
X: 输出大写十六进制方式
print("{0:c},{0:d},{0:o},{0:x},{0:X}".format(125))
输出
'}',125,175,7d,7D
浮点数输出格式
e:输出对应小写e的指数形式
E:输出对应大写E的指数形式
f:输出标准浮点形式
%:输出百分形式
print("{0:e},{0:E},{0:f},{0:%}".format(3.14))
print("{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14))
输出
3.140000e+00,3.140000E+00,3.140000,314.000000%
3.14e+00,3.14E+00,3.14,314.00%