Python基础数据类型-字符串(string)

                  Python基础数据类型-字符串(string)

                                        作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

  本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟,请知晓。

一.字符串的基本操作

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com name = " yinzhengjie " print(name.capitalize()) #将首字母大写
print(name.count("e")) #统计"e"这个字母在name变量中的字符串出现的次数
print(name.center(50,"=")) #打印50个字符,如果name这个变量中的字符串总个数不足50个,少出来的位置用“=”来填补,将name这个变量居中。
print(name.ljust(50,"*")) #打印50个字符,如果name这个变量中的字符串总个数不足50个,少出来的位置用“=”来填补,但并不是将name这个字符串居中,而是打印整个字符串,不够50个字符串的用“*"号填补。
print(name.rjust(50,"*")) #这个和上面的相反,将整个字符串的占位打在右边,左边不足50个字符的用"*"填补.
print(name.endswith("jie")) #判断一个变量是否以“jie”这个字符串结尾,如果是就返回Ture.
print(name.find("e")) #在name这个字符串中查找含有name字样的索引,从左往右开始查找,将查找的第一个返回出来,也就是最靠左边的那个.
print(name.rfind("e")) #从左往右开始查找,将查找到的最靠右的匹配结果的索引取出来.
print(name[name.find("n"):]) #字符串和列表都有相同的功能,都可以支持切片,比如这个例子就是取“n”这个字符后面的所有字符.
print(name.isalnum()) #判断字符串是否仅仅包含[a-z][A-Z][0-9]
print(name.isalpha()) #判断字符串仅仅包含[a-z][A-Z]
print(name.isdecimal()) #判断字符串是否是十六进制的数字
print(name.isdigit()) #判断该字符串是否是一个整数
print(name.isidentifier()) #判断是不是一个合法的标识符
print(name.islower()) #判断前面的字符串是否都是小写
print(name.isupper()) #判断前面的字符串是否都是大写
print(name.isnumeric()) #判断该变量是否是一个十进制的数字
print(name.isspace()) #判断前面的字符串是否是一个空格
print(name.istitle()) #判断这个字符串的每个字母是否大写
print(name.isprintable()) #判断前面的字符串是否支持打印功能,一般字符串都是可以打印的。在linux中一切都是文件,一些tty,drive等终端文件是不能打印的,就可以用这个来判断,用途比较少
print(name.lower()) #将大写变成小写
print(name.upper()) #将小写变成大写
print(name.lstrip()) #只去掉左边的换行符或者空格
print(name.rstrip()) #只去掉左边和右边的换行符或者空格
print(name.strip()) #去掉字符串左右两边的空格和换行符. #以上代码执行结果如下:
yinzhengjie
2
============== yinzhengjie ===============
yinzhengjie *****************************
***************************** yinzhengjie
False
10
15
nzhengjie
False
False
False
False
False
True
False
False
False
False
True
yinzhengjie
YINZHENGJIE
yinzhengjie
yinzhengjie
yinzhengjie

二.字符串的格式化输出操作

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com '''
字符串格式化:将数字和字符串相结合 ''' #注意,%s和%d都是占位符哟!
msg = "我的名字是%s,年龄是%d,爱好是:%s"%("尹正杰",18,"Python") print(msg) name = "我的英文名字是:%s"% "yinzhengjie"
print(name) #以上代码执行结果如下:
我的名字是尹正杰,年龄是18,爱好是:Python
我的英文名字是:yinzhengjie

占位符格式化案例展示,以下都是字符串的方法实现的格式化输出

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com UserInformation = "My \tname is {name} and I love play {hobby}!"
print(UserInformation)
print(UserInformation.expandtabs(tabsize=50)) #自定义tab的间隔打小,该处是指定tab的间隔是50个空格。
print(UserInformation.format(name="Yinzhengjie",hobby="Skating")) #以定义一个变量的形式传递一个参数到“UserInformation”的字符串中
print(UserInformation.format_map({'name':"Yinzhengjie",'hobby':"Skiing"}))
print('+'.join(['','',''])) #将一个列表的信息追加到前面的字符串中。 #以上代码执行结果如下:
My name is {name} and I love play {hobby}!
My name is {name} and I love play {hobby}!
My name is Yinzhengjie and I love play Skating!
My name is Yinzhengjie and I love play Skiing!
1+2+3

三.字符串的进阶操作

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com passwd = str.maketrans("abclefghijklmnopqrstuvwxyz",'1234567890!@#$%^&*()_+-={}') #将前面的字符串后后面的数字和特殊字符一样匹配,对应的数字会转换成相应的字符。 print("yinzhengji111e".translate(passwd)) # 将上面自定义的参数,合这里面的字符想对应,如果穿进去的参数没有对应的字符就不匹配。这个跟Linux的密码加密有点类似哟。 print('yinzhengjie'.replace('e', 'E', 2)) # 将字符串中的某个字符换成另外的一个字母或者数字(字符),后面可以匹配相应的次数,依次从左往右开始匹配。 print('yin zheng jie'.split()) # 将字符串按照空格分成一个列表 print('1+2+3+4+5'.split('+')) # 用“+”作为分隔符,将其变成一个列表,如果不指定的话是以默认以空格分隔符的,例子如上 print('YinZhengJie'.swapcase()) # 将字符串中的大小写互换 print('yin zheng jie'.title()) # 将以空格为分隔符的所有的小写字母变大写 print('yinzhengjie'.zfill(50)) # 总共需要打印50个字符,如果字符串不够的话前面用0占位 #以上代码执行结果如下:
{9$}85$7091115
yinzhEngjiE
['yin', 'zheng', 'jie']
['', '', '', '', '']
yINzHENGjIE
Yin Zheng Jie
000000000000000000000000000000000000000yinzhengjie

 

四.字符串编码操作

  我们在计算机上编辑工作文档或是发博客文章等等,最终这些数据都会保存到我们的磁盘上去,那么保存到磁盘到底是以什么样的方式进行保存的呢?其实就是以连续的“0”或者“1”的方式进行保存的。连续八个“0”或者“1”我们称之为一个字节(1byte=8bits)。存储汉字有很多种编码格式,如Unicode,也有utf-8,还有gbk,gb2312等等。接下来我们就一起看看如何将字符串进行编码解码操作(编码就是讲数据类型(字符串)转换成二进制(当然可以用十六进制去读取),解码就是相反的操作)。

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com name = "尹正杰" v1 = name.encode(encoding="utf-8") #这就是对字符串做编码操作,将数据从字符串类型转换成二进制类型,但是显示的时候并不是“0”或者“1”哟,而是以十六进制显示。
print(v1) v2 = name.encode(encoding="gb2312")
print(v2) v3 = name.encode(encoding="gbk") #和上面操作一样,只不过我们这里指定这个字符串编码格式以“gbk”方式进行编码,这样我们就可以将这个数据写入到磁盘上去。
print(v3) v4 = v3.decode(encoding="gbk") #这里就是进行解码操作,需要传入V3编码的格式,如果格式和V3编码格式不一致就会报错哟!如:UnicodeDecodeError.
print(v4) v5 = v2.decode(encoding="gb2312")
print(v5) v6 = v1.decode(encoding="utf-8")
print(v6) #以上代码执行结果如下:
b'\xe5\xb0\xb9\xe6\xad\xa3\xe6\x9d\xb0'
b'\xd2\xfc\xd5\xfd\xbd\xdc'
b'\xd2\xfc\xd5\xfd\xbd\xdc'
尹正杰
尹正杰
尹正杰
上一篇:SQL 语法 Join与Union


下一篇:html5 canvas 一个漫天飞雪的效果