前言
文章首发于微信公众号:可乐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_strTrue>>> "xuebi" in double_strFalse>>> "xuebi" not in double_strTrue>>> "kele" not in double_strFalse
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. | m 为最小宽度,n为小数点位数 |
- | 左对齐 |
+ | 添加符号 |
# | 八进制添加 0o 、十六进制添加0x 或0X
|
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'# Python 3.8 支持使用等号拼接表达式和结果>>> num_x = 1>>> f"{num_x+1 = }"num_x+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、运算符都比较常用,其中 in
和 not in
在处理字符串时常用于判断,能够帮助我们清洗一部分数据。
3、格式化输出较多,建议逐个进行尝试、体会,其中 format
函数功能十分强大,工作中十分常用, 它在数字格式化方面的应用也较为丰富,它还可接收参数,参数甚至可以是函数对象。
4、文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,字符串相关的有趣案例也可进行分享。