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

前言

文章首发于微信公众号:可乐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、十六进制添加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'# 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、运算符都比较常用,其中 innot in 在处理字符串时常用于判断,能够帮助我们清洗一部分数据。

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345