已完成专题:
1.我的施工计划
2.数值专题
这篇是字符串专题总结
除了常见的数值型,字符串是另一种常遇到的类型。一般使用一对单引号或一对双引号表示一个字符串。
字符串中如果遇到 \
字符,可能是在做字符转义,所谓的转义便是字符的含义发生改变,比如常用的\n
组合,转义后不再表示字符n
本身,而是完成换行的功能。
类似的,还有很多转义字符,如 \t
, 正则表达式中 \s
,\d
等等。
接下来一一总结字符串常见用法,此专题展开的思维导图如下:
字符串专题思维导图一般使用一对单引号或一对双引号表示一个字符串。如下所示s
为字符串:
s = 'python' # 或 s = "python"
很多情况下单引号和双引号作用相同,但是一些情况还是存在微妙不同。
例如,使用一对双引号(""
)时,打印下面字符串无需转义字符(也就是\
字符):
In [10]: print("That isn't a horse")
That isn't a horse
但是使用一对单引号打印时,却需要添加转义字符 \
,如下所示:
In [11]: print('That isn\'t a horse')
That isn't a horse
除此之外,如果遇到字符串偏长,一行容不下来,需要展示为多行。一对三重单引号'''
或三重"""
就会派上用场,它们能轻松实现跨行输入:
In [12]: print("""You're just pounding two
...: coconut halves together.""")
You're just pounding two
coconut halves together.
转义的语法:一个\
+单个字符,组合后单个字符失去原来字面意义,会被赋予一个新的功能。
常见的转义字符:\n
完成换行,\t
tab 空格等。
转义的另外一个重要作用是用于Python的正则。正则不仅指使用模块 re
完成字符串处理,还泛指很多常用包中函数的参数使用小巧的正则表达,比如数据分析必备包 pandas
,str
访问器中 split
, cat
等方法参数中使用转义字符。
关于正则处理字符串的常见用法,后面会有一个单独的专题总结。
字符串与数字结合也会十分有用,可以玩出很多有趣的花样。
数字n
乘以字符串会克隆出n
倍个原字符串:
In [42]: 3*'py'
Out[42]: 'pypypy'
20乘以字符-
会绘制出一条虚线:
In [43]: 20*'-'
Out[43]: '--------------------'
2个字符串常量能直接结合,中间不用添加任何东西,如下:
In [14]: 'Py''thon'
Out[14]: 'Python'
单个字符还能与数值完成互转,内置函数ord
转换单个字符为整型,chr
函数转换整数为单个字符:
In [35]: ord('振')
Out[35]: 25391
In [36]: chr(25391)
Out[36]: '振'
还能使用bytes
函数将字符串转为字节类型(bytes
),使用str
函数转化字节类型为字符串:
s = 'python'
sa = bytes(s,encoding='utf-8')
s = str(sa,encoding='utf-8')
常规打印一个字符串比较简单,如果打印字符串中含有变量,该怎么正确打印。一般有两种方法:
使用 format
函数
字符串变量使用一对花括号{}
, format 参数中指定变量的取值:
>>> print("i am {0},age {1}".format("tom",18))
i am tom,age 18
f
打印
f
后面紧跟一个字符串,其中花括号{}
中直接写出变量名称,显然这种含有变量的打印方法更加符合大多数人的习惯:
In [45]: tom = 'tom'
In [46]: age = 18
In [47]: print(f'i am {tom}, age {age}')
i am tom, age 18
除了知道如何打印字符串,还有一项重要的事:如何控制字符串的打印。
虽然这是一个非常小的功能,但是知道一些常见的控制方法,却能使得书写更加简洁。常见的控制打印用法:
输出中如何控制保留两位小数,整数补零填充,对齐,百分比格式打印,整数太长使用科学计数法打印等等。可以记住如下7种常见用法:
(1). 保留小数点后两位
# 1 保留小数点后两位
>>> print("{:.2f}".format(3.1415926))
3.14
(2). 带符号保留小数点后两位
>>> print("{:+.2f}".format(-1))
-1.00
(3). 不带小数位
>>> print("{:.0f}".format(2.718)) # 不带小数位
3
(4). 整数补零,填充左边, 宽度为3
>>> print("{:0>3d}".format(5)) # 整数补零,填充左边, 宽度为3
005
(5). 以逗号分隔的数字格式
>>> print("{:,}".format(10241024)) # 以逗号分隔的数字格式
10,241,024
(6). 百分比格式
>>> print("{:.2%}".format(0.718)) # 百分比格式
71.80%
(7). 指数记法
>>> print("{:.2e}".format(10241024)) # 指数记法
1.02e+07
字符串对应Python中的 str
类型,其内置封装的方法有几十个,下面列举一些常用的必知的用法。
join
串联多个字符串,注意Python中没有单个字符这种类型,单个字符在Python中也会被当作str
类型。如下连接多个字符串,最终打印出 Python
串:
chars = ['P', 'y', 't', 'h', 'o', 'n']
name = ''.join(chars)
既然有串联字符串,就应该有相反的操作:分割字符串,一般使用split
函数,第一个参数指明分割字符串使用的分割符:
In [49]: 'col1,col2,col3'.split(',')
Out[49]: ['col1', 'col2', 'col3']
split
还有第二个参数指明需要做的分割次数,比如只做一次分割,得到如下两个元素:
In [51]: 'col1,col2,col3'.split(',',1)
Out[51]: ['col1', 'col2,col3']
split
默认是从左侧开始分割字符串,与之对应的另一个函数rsplit
就是从右侧开始分割字符串,某些场景rsplit
函数更好用一些。从右侧开始只做一次分割可以写为:
In [52]: 'col1,col2,col3'.rsplit(',',1)
Out[52]: ['col1,col2', 'col3']
除了以上两个常用的方法,还有replace
,startswith
,strip
,lstrip
等等经常也会用到,在此不再一一举例。
以上就是字符串处理的基本用法专题,主要总结了:
1 字符串创建
2 \ 转义
3 字符串与数字
4 字符串打印及格式化
5 字符串常见处理操作
最后,以一个更有意思的小功能作为本专题的收尾。
已知下面一个长句,将其转化为多行,每行只有11个字符。
words = '是想与朋友们分享一个再普通不过的道理:脚踏实地做些实事,哪怕是不起眼的小事,每天前进一点,日积月累会做出一点成绩的。'
借助内置的textwrap
模块中fill
方法,实现每行11
个字符:
import textwrap
r = textwrap.fill(words,11)
print(r)
结果:
是想与朋友们分享一个再
普通不过的道理:脚踏实
地做些实事,哪怕是不起
眼的小事,每天前进一点
,日积月累会做出一点成
绩的。
送 2 本书:Python数据分析与挖掘实战,最走心留言送1本,点赞最多送1本。后面凡是专题类文章都会送几本书,欢迎朋友们星标振哥的公众号,多多留言与振哥互动,根据最新推送规则你会第一时间收到推文。点击了解此书详情:
Python数据分析与挖掘实战(第2版)此书简介:畅销书全新升级,第1版销售超过10万册,被国内100余所高等院校采用为教材,同时被广大数据科学工作者奉为经典,是该领域公认的事实标准。作者在大数据挖掘与分析等领域有10余年的工程实践、教学和创办企业的经验,不仅掌握行业的技术和实践方法,而且洞悉学生和老师的需求与痛点。
原创不易,最后希望朋友们能点个在看或分享朋友圈支持振哥,叫我更有动力写好下一篇专题。