1.3 Python 字符串,劳动节前夕加餐

前言

前面介绍了 Python 字符串自建函数的相关操作,详细内容请前往一文搞定 Python 字符串操作(上)一文搞定 Python 字符串操作(下)阅读。

今天介绍一下 Python 字符串转义字符运算符、以及格式化输出的相关知识,并附上相关案例代码,便于学习、理解。


转义字符

Python 用反斜杠 \ 转义字符,赋予字符新的含义。虽然转义字符由多个字符组成,但在 Python 中会将其视为一个字符,具体说明请参考下表:

符号

说明

\'

单引号

\"

双引号

\a

发出系统响铃声

\0

空字符

\n

换行符

\r

回车符

\t

横向制表符(Tab)

\v

纵向制表符

\f

换页符

\

反斜杠

\o

八进制表示符

\x

十六进制表示符

\b

退格符(Backspace)

我们选择几个转义字符演示一下效果

1、单引号、双引号

>>> print("my \' name is kele")
my ' name is kele
>>> print("my \" name is kele")
my " name is kele

2、响铃符,注意并非喇叭发声而是蜂鸣器,现在的计算机基本都不带了,所以响铃不一定有效

>>> print("my \a name is kele")
my  name is kele

3、空字符、换行符、回车符

# 空字符
>>> print("my \0 name is kele")
my   name is kele

# 换行符
>>> print("my \n name is kele")
my
 name is kele

# 回车符
>>> print("my \r name is kele")
my
 name is kele

4、横向制表符、反斜杠

# 横向制表符,默认为 4 个空格
>>> print("my\tname is kele")
my  name is kele

# 回车符
>>> print("my \\r name is kele")
my \r name is kele

运算符

字符串运算符与相关描述,请参考下表:

符号

说明

+

拼接字符串

*

重复输出字符串

[]

通过索引取字符串元素

[:]

截取部分字符串,遵循左闭右开原则

in

成员运算符,判断字符串是否包含元素

not in

成员运算符,与 in 相反

r/R

原始字符串,让转义字符失效

%

格式化字符串

1、使用 + 拼接 字符串。

>>> before_str = "Hi,"
>>> after_str = "my name is kele"
>>> splicing_str = before_str + after_str
>>> splicing_str
'Hi,my name is kele'

2、使用 * 重复输出字符串。

>>> double_str = "Hi"
>>> double_str * 5
'HiHiHiHiHi'

3、使用索引值获取字符串元素,索引从 0 开始。

>>> double_str = "my name is kele"
>>> double_str[0]    # 获取字符串第 1 个元素
'm'
>>> double_str[4]    # 获取字符串第 5 个元素
'a'

4、使用索引值截取部分字符串,索引从 0 开始。

>>> double_str = "my name is kele"
>>> double_str[0:2]    # 截取字符串第 1~2 个元素
'my'
>>> double_str[2:4]    # 截取字符串第 3~4 个元素
' n'

5、使用 in & not in 判断字符串是否包含元素。

>>> double_str = "my name is kele"
>>> "kele" in double_str
True
>>> "xuebi" in double_str
False
>>> "xuebi" not in double_str
True
>>> "kele" not in double_str
False

6、使用 r & R 输出原始字符串,让转义字符失效。

# 未使用时,会输出空行
>>> print("\n")

>>> print(r"\n")
\n
>>> print(R"\n")
\n

格式化输出

字符串格式化输出与相关描述,请参考下表:

符号

说明

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同 %e,用科学计数法格式化浮点数

%g

%f 和 %e 的简写

%G

%f 和 %E 的简写

format()

格式化字符串的函数,Python 2.6 开始

f-string

字面量格式化字符串,Python 3.6 开始

格式化操作符,常用辅助参数可参考下表:

辅助参数

描述

m 为最小宽度,n为小数点位数

-

左对齐

+

添加符号

#

八进制添加 0o、十六进制添加0x0X

0

显示数字时使用 0 取代空格

1、使用 %c 格式化字符及其ASCII码。

>>> "%c" % 97
'a'
>>>"%c%c%c" % (97, 98, 99)
'abc'

2、使用 %s 格式化输出字符串。

>>> "Hi, my name is %s" % "kele"
'Hi, my name is kele'
>>> "%s, my name is %s" % ("Hi", "kele")
'Hi, my name is kele'

3、使用 %d 格式化输出整数。

>>> "1 + 1 = %d" % 2
'1 + 1 = 2'
>>> "%d + %d = %d" % (1, 1, 2)
'1 + 1 = 2'
>>> "%5d" % 8    # 输出宽度为 5 的字符
'    8'
>>> "%-5d" % 8   # 左对齐
'8    '
>>> "%+d" % 8    # 显示整数符号
'+8'
>>> "%05d" % 8   # 使用 0 取代空格
'00008'

4、使用 %o 格式化无符号八进制数。

>>> "%o" % 16
'20'
>>> "%#o" % 16   # 添加八进制符号
'0o20'

5、使用 %x%X 格式化无符号十六进制数。

>>> "%x" % 16
'10'
>>> "%X" % 16
'10'
>>> "%#x" % 16   # 添加十六进制符号
'0x10'
>>> "%#X" % 16   # 添加十六进制符号
'0X10'

6、使用 %f 格式化浮点数字,可指定小数点后面的精度。

>>> "%f" % 168.888
'168.888000'     # 小数点后默认保留 6 位小数
>>> "%3.1f" % 168.888
'168.9'          # 总宽度为3, 保留 1 位小数
>>> "%.2f" % 168.888
'168.89'         # 保留 2 位小数

7、使用 %e%E 用科学计数法格式化浮点数。

>>> "%e" % 168.888
'1.688880e+02'
>>> "%E" % 168.888
'1.688880E+02'

8、使用 %g%G 格式化浮点数,根据值的大小选择合适的格式符。

>>> "%g" % 168.888
'168.888'
>>> "%g" % 1688888.888
'1.68889e+06'
>>> "%G" % 1688888.888
'1.68889E+06'

9、format 函数,通过 {}: 来代替以前的 %,其中字符串操作使用大括号,数字操作使用冒号,本文以字符串为例。

# 不指定位置,默认按顺序匹配
>>> 'Hi my {} is {}'.format("name", "kele")
'Hi my name is kele'

# 指定位置,按位置匹配
>>> '{0} {1} {0}'.format("kele", "xuexi")
'kele xuexi kele'

# 文件目录拼接
>>> '{0}\\{1}\\{0}'.format("Desktop", "Python", "kele")
'Desktop\\Python\\Desktop'

10、f-string 格式化字符串以 f 开头,后面接字符串,字符串中的表达式用大括号 {} 包起来,可替换变量或表达式计算后的值。

# 替换变量
>>> name = "kele"
>>> f"my name is {name}"
'my name is kele'

# 替换表达式
>>> f"{1+1}"
'2'

格式化输出案例之打印三角形

for i in range(5):
    for j in range(0, 5 - i):
        print(end=" ")
    for k in range(5 - i, 5):
        print("*", end=" ")

    print("")

# 效果如下:
    *
   * *
  * * *
 * * * *

格式化输出案例之打印九九乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end='')
    print()

效果如下:

总结

1、转义字符中,换行符、回车符、反斜杠、制表符较为常用,使用 r 或者 R 可取消其转义功能。

2、运算符都比较常用,其中 innot in 在处理字符串时常用于判断,能够帮助我们清洗一部分数据。

3、格式化输出较多,建议逐个进行尝试,其中 format 函数功能十分强大,工作中十分常用, 它在数字格式化方面的应用也较为丰富,它还可接收参数,甚至其参数可以是函数对象。

4、文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言去指正,字符串相关的有趣案例也可进行分享。