目录

  • 前言
  • 一.字符串函数
  • 二.操作函数
  • 三.格式化函数
  • 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%