写在前面
清明时节雨纷纷,我在家里堆文章!又一个小长假开始了,各位朋友出去游玩时注意安全呀。诸位可以闲,笔者不能闲,笔者要为旅途中的你准备文章,以解你旅途困顿(也许看后会直接睡着吧),笔者这种大无畏的雷锋精神,应该有点掌声吧。上一期文章中,笔者和大家讲解了一下序列以及序列之中的两种重要对象列表和元组,所以这里必须要响应毛主席的号召(宜将剩勇追穷寇,不可沽名学霸王),将序列进行到底。因此,本期文章中,笔者将和大家一起聊一下序列之中的另外一种重要的数据对象:字符串,这个你无时无刻都将会打交道的对象。如果说列表是序列的嫡长子,是Python的主力;那么,毫无疑问,字符串必将是序列中的老幺(最被爱的,可惜笔者不是呀),另一大Python主力。下面就让我们进入这一期的主题吧!
就知道你又要来,我们都准备好了,这一次的写作框架是什麼呀(突然间明白了冯巩的感受了)。本期文章主体部分包括字符串的创建、字符串的常用操作方法以及字符串的格式化设置三部分,下面小编一一道来。
(一)字符串创建
字符串是Python中的重量级对象,Python编程中多数操作的进行都离不开字符串,那么到底什麼是字符串以及怎么创建字符串呢?关于什麼是字符串,小编这里只有一句话:所谓字符串(String)就是是由数字、字母、下划线组成的一串字符。如果用Python的语言进行解释,那么字符串就是被引号所包括起来的一串字符。因此,Python语言中引号就是字符串的标志,所以,在Python语言中创建字符串就是很简单地把所需创建的内容包括在引号之中就可以了。存在两种引号方法用来创建字符串:单引号(' ')和双引号(" ")。这两种方式在创建字符串时完全等价,例如String = 'Hello Python'和String = "Hello Python"除了引号方式不同之外,所创建的内容完全相同。那么不禁要问,既然两种方式完全相同,那么为什麼要同时保留这两种方式呢?这就是Python人性化的原因,两种方式的同时保存是源于引号的重复引用,假如你要创建一个字符串I'm a chinese,那么你就不可能采用' I'm a chinese'这种方式进行创建,因为这种方式无法让Python进行引号配对,最终就会引起错误。在这种情形下,你便需要采用" I'm a chinese"这种方式进行创建,这就是同时保留这两种方式的原因。当然在更多时候你只需要习惯于一种方式就可以了。另外在Python中还有一种释义字符串,这种字符串采用三引号(''' '''或者""" """)方式进行创建,这种字符串常常用于跨行字符串的创建或者是函数含义的说明创建,所以这种字符串英文定义是docString,更多的说明可以参考python学习手册。
(二)字符串常用操作方法
上文说明了字符串的创建,在完成创建之后,那么就需要对字符串进行操作。字符串也是一种序列,因此上期文章中讲到的序列常用操作方法完全可以适用于字符串,对此,笔者不再赘述。小编这里主要介绍一些常用于字符串操作中独有方法(必须要说明的一点是Python中进行字符串操作的方法,那是相当滴多,有兴趣的朋友可以去参考Python的官方文档或者是Python中的String模块,笔者这里只介绍Python字符串操作中最为常用的方法,当然在介绍的过程中也会提及一些关联的方法,读者朋友可以自行查阅这些方法)。
2.1 center
方法center通过在字符串两端添加center指定的字符(默认为空格)以使得字符串居于center指定长度的中间。
String = 'Hello World'
String.cneter(13)
' Hello World '
String.center(13,'*')
'*Hello World*'
关联方法有:ljust,rjust,zfill等。
2.2 find
方法find是用来在给定字符串中查找指定字符串,如果在给定字符串中找到,那么则返回指定字符串在给定字符串中首次出现的位置,如果没有找到则返回-1。
String = 'Hello World'
String.find('Wor')
6
String.find('Python')
-1
find方法默认情况下是在整个字符串中进行查找,当然你也可以通过指定find查找的位置从而在字符串的一定范围内进行查找,例如String.find('Wor',2),那么便会从字符串的第三个字符处开始向后进行查找;String.find('Wor',2,11),那么便会查找字符串中2:11的范围,切记顾头不顾尾。
关联方法有:rfind、index、rindex、count、startswith、endswith。
2.3 join
join方法常用于将列表中的元素安装指定的字符连接成字符串,切记列表中的元素一定要为字符。
Lst = ['h','e','l','l','o']
''.join(Lst)
'hello'
'*'.join(Lst)
'h*e*l*l*o'
print('C:' + '\\'.join(['','User','Gauss',Desktop'])
C:\\User\\Gauss\\Desktop
上述输出路径为笔者的计算机桌面绝对路径。
关联方法:split
2.4 lower
lower方法用于将字符串全部转化成小写格式。
String = 'Hello Python'
String.lower()
'hello python'
关联方法:capitalize、title、upper。
2.5 replace
用过Excel中查找和替换的朋友应该会很明白这里的replace方法,replace就是用新字符串替换旧字符串。
String = 'Hello World'
String.replace('World','Python')
String = 'Hello Python'
关联方法:translate
2.6 split
split和join可以说是字符串操作中的骨灰级方法,split的用法刚好和join的用法相反,split方法按照指定的分割符将原始字符串分割成一个列表,如果没有指定分隔符,则将空白字符(空格、制表符、换行符)作为字符串的分割符。
'1+2+3+4+5'.split('+)
['1','2','3','4','5']
'Hello Python'.split()
['Hello','Python']
值得注意的是,使用split分割字符串形成的列表也是字符串列表,所以有时需要通过转换函数进行转换,这里不多说。
2.7 strip
一般的字符串操作中,很少会使用strip方法,但是如果诸位朋友需要进行爬虫,那么strip方法将是你最为频繁使用的几种字符串操作方法之一了。strip方法主要用于删除字符串两端的空白(当然不会删除字符串中间的空白),如果你对strip方法指定特定字符的话,那么这一方法也可以删除字符串两端的指定字符。
' Hello Python '.strip()
'Hello Python'
'****Hello Python***!!'.split('*!')
'Hello Python'
关联方法:lstrip,rstrip
2.8 判断字符串是否满足特定条件
很多字符串方法以is打头,如isspace、isdigit,它们用于判断字符串是否具有某种性质。如果字符串具备特定性质,这些方法就返回True,否则返回False。这些方法有:isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、isprintable、isspace、istitle、isupper。
以上介绍的这些方法将会在字符串的操作中频繁使用,因此最好能够熟练使用,至于其它字符串方法可以根据自己的需要参考相应的学习资料针对性学习。
(三)字符串格式设置
上文对字符串操作中的常用方法进行了介绍,这里小编进一步介绍Python字符串操作中的另一个重量级话题,即Python中的字符串格式设置。Python中对于字符串的格式设置主要存在两种方式,一种方式是使用%,另外一种是使用{}+format。前一种方法是Python3之前最为流行的方式,而后一种方式则是目前最被推荐使用的方式。因此,这里主要通过后一种方式来讲解Python之中的字符串设置话题。
{}+format方法的基本思想就是,将替换字段放置于format之前的{}之中,而将替换值放置于format之后的()中,具体的用法为:
' I like {}'.format(Cat)
'I like Cat'
如果你需要在输出的字符串中包含{}的话,那么请使用{{}}。
'I like {{}}'.format(cat)
'I like '
就是这么简单,就是这么任性。这种方法最核心的部分就是format前面{}中替换字段的设置,通常对于替换字段的设置主要包括替换字段名、转化标志以及格式说明符三种。
3.1 替换字段名
替换字段名:就是指指format前面{}的索引或标识符,指出要设置哪个值的格式并使用果来替换该字段。除指定值外,还可指定值的特定部分,如列表的元素。如果不进行指定时默认采用顺序索引,即按照0,1,2……的顺序进行索引。
'welcome {},{},{}'.foramt(Xi,Li,Wang)
'welcome Xi,Li,Wang'
当然你也可以通过自定义索引顺序进行格式设置:
'welcome ,,'.format(xi,li,wang)
'welcome li,xi,wang'
除此之外,你还可以通过给各替换字段赋予名称来进行引用,当然你也可以数字索引和名称同时使用。
'welcome ,'.format(name=xi,name2=li)
'welcome xi,li'
'welcome ,,'.format(name=xi,li,wang)
'welcome xi,li,wang'
3.2 转化标志
转换标志:跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)和a(表示ascii)。如果你指定了转换标志,将不使用对象本身的格式设置机制,而是使用指定的函数将对象转换为字符串,再做进一步的格式设置。
print(" ".format(pi="π"))
π,'π','\u03c0'
上述三个标志(s、r和a)分别使用str、repr和ascii进行转换。函数str通常创建外观普通的字符串版本。函数repr尝试创建给定值的Python表示函数ascii创建只包含ASCII字符的表示。
3.3 格式说明符
格式说明符:跟在冒号后面的表达式(这种表达式是使用微型格式指定语言表示的)。格式说明符旨在详细指定最终格式,包括格式类型(如字符串、浮点数),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。
显示格式类型最常用的两种类型是字符串(s)和浮点型(f),类型的指定是在":"号之后通过添加格式类型进行指定,例如如果要将替换字段设置为浮点型,可通过''.format(num=3.1)实现。宽度以及精度的设置是通过整数进行指定,不过在设置时需要在两个整数之间添加一个"."号,"."号前面的为显示宽度,后面的为显示精度,例如''.format(num=2.1345)将被显示为2.13。千分位的设置是通过","号进行实现的,见下例:
'One googol is {:,}'.format(10**100)
'One googol is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000'
同时,有很多用于设置数字格式的机制,比如便于打印整齐的表格。在大多数情况下,只需指定宽度和精度,但包含负数后,原本漂亮的输出可能不再漂亮。另外,字符串和数的默认对齐方式不同,你可能想修改默认对齐方式。在指定宽度和精度的数前面,可添加一个标志。这个标志可以是零、加号、减号或空格,其中零表示使用0来填充数字。
'{:010.2f}'.format(pi)
'0000003.14'
要指定左对齐、右对齐和居中,可分别使用和^。
print('\n\n'.format(pi))
3.14
3.14
3.14
可以使用填充字符来扩充对齐说明符,这样将使用指定的字符而不是默认的空格来填充。
"{:$^15}".format(" WIN BIG ")
'$$$ WIN BIG $$$'
领取专属 10元无门槛券
私享最新 技术干货