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

                                        作者:尹正杰

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

 

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

一.字符串的基本操作

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #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/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. name = " yinzhengjie "
  8.  
  9. print(name.capitalize()) #将首字母大写
  10. print(name.count("e")) #统计"e"这个字母在name变量中的字符串出现的次数
  11. print(name.center(50,"=")) #打印50个字符,如果name这个变量中的字符串总个数不足50个,少出来的位置用“=”来填补,将name这个变量居中。
  12. print(name.ljust(50,"*")) #打印50个字符,如果name这个变量中的字符串总个数不足50个,少出来的位置用“=”来填补,但并不是将name这个字符串居中,而是打印整个字符串,不够50个字符串的用“*"号填补。
  13. print(name.rjust(50,"*")) #这个和上面的相反,将整个字符串的占位打在右边,左边不足50个字符的用"*"填补.
  14. print(name.endswith("jie")) #判断一个变量是否以“jie”这个字符串结尾,如果是就返回Ture.
  15. print(name.find("e")) #在name这个字符串中查找含有name字样的索引,从左往右开始查找,将查找的第一个返回出来,也就是最靠左边的那个.
  16. print(name.rfind("e")) #从左往右开始查找,将查找到的最靠右的匹配结果的索引取出来.
  17. print(name[name.find("n"):]) #字符串和列表都有相同的功能,都可以支持切片,比如这个例子就是取“n”这个字符后面的所有字符.
  18. print(name.isalnum()) #判断字符串是否仅仅包含[a-z][A-Z][0-9]
  19. print(name.isalpha()) #判断字符串仅仅包含[a-z][A-Z]
  20. print(name.isdecimal()) #判断字符串是否是十六进制的数字
  21. print(name.isdigit()) #判断该字符串是否是一个整数
  22. print(name.isidentifier()) #判断是不是一个合法的标识符
  23. print(name.islower()) #判断前面的字符串是否都是小写
  24. print(name.isupper()) #判断前面的字符串是否都是大写
  25. print(name.isnumeric()) #判断该变量是否是一个十进制的数字
  26. print(name.isspace()) #判断前面的字符串是否是一个空格
  27. print(name.istitle()) #判断这个字符串的每个字母是否大写
  28. print(name.isprintable()) #判断前面的字符串是否支持打印功能,一般字符串都是可以打印的。在linux中一切都是文件,一些tty,drive等终端文件是不能打印的,就可以用这个来判断,用途比较少
  29. print(name.lower()) #将大写变成小写
  30. print(name.upper()) #将小写变成大写
  31. print(name.lstrip()) #只去掉左边的换行符或者空格
  32. print(name.rstrip()) #只去掉左边和右边的换行符或者空格
  33. print(name.strip()) #去掉字符串左右两边的空格和换行符.
  34.  
  35. #以上代码执行结果如下:
  36. yinzhengjie
  37. 2
  38. ============== yinzhengjie ===============
  39. yinzhengjie *****************************
  40. ***************************** yinzhengjie
  41. False
  42. 10
  43. 15
  44. nzhengjie
  45. False
  46. False
  47. False
  48. False
  49. False
  50. True
  51. False
  52. False
  53. False
  54. False
  55. True
  56. yinzhengjie
  57. YINZHENGJIE
  58. yinzhengjie
  59. yinzhengjie
  60. yinzhengjie

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

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #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/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. '''
  8. 字符串格式化:将数字和字符串相结合
  9.  
  10. '''
  11.  
  12. #注意,%s和%d都是占位符哟!
  13. msg = "我的名字是%s,年龄是%d,爱好是:%s"%("尹正杰",18,"Python")
  14.  
  15. print(msg)
  16.  
  17. name = "我的英文名字是:%s"% "yinzhengjie"
  18. print(name)
  19.  
  20. #以上代码执行结果如下:
  21. 我的名字是尹正杰,年龄是18,爱好是:Python
  22. 我的英文名字是:yinzhengjie

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

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #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/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. UserInformation = "My \tname is {name} and I love play {hobby}!"
  8. print(UserInformation)
  9. print(UserInformation.expandtabs(tabsize=50)) #自定义tab的间隔打小,该处是指定tab的间隔是50个空格。
  10. print(UserInformation.format(name="Yinzhengjie",hobby="Skating")) #以定义一个变量的形式传递一个参数到“UserInformation”的字符串中
  11. print(UserInformation.format_map({'name':"Yinzhengjie",'hobby':"Skiing"}))
  12. print('+'.join(['','',''])) #将一个列表的信息追加到前面的字符串中。
  13.  
  14. #以上代码执行结果如下:
  15. My name is {name} and I love play {hobby}!
  16. My name is {name} and I love play {hobby}!
  17. My name is Yinzhengjie and I love play Skating!
  18. My name is Yinzhengjie and I love play Skiing!
  19. 1+2+3

三.字符串的进阶操作

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #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/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. passwd = str.maketrans("abclefghijklmnopqrstuvwxyz",'1234567890!@#$%^&*()_+-={}') #将前面的字符串后后面的数字和特殊字符一样匹配,对应的数字会转换成相应的字符。
  8.  
  9. print("yinzhengji111e".translate(passwd)) # 将上面自定义的参数,合这里面的字符想对应,如果穿进去的参数没有对应的字符就不匹配。这个跟Linux的密码加密有点类似哟。
  10.  
  11. print('yinzhengjie'.replace('e', 'E', 2)) # 将字符串中的某个字符换成另外的一个字母或者数字(字符),后面可以匹配相应的次数,依次从左往右开始匹配。
  12.  
  13. print('yin zheng jie'.split()) # 将字符串按照空格分成一个列表
  14.  
  15. print('1+2+3+4+5'.split('+')) # 用“+”作为分隔符,将其变成一个列表,如果不指定的话是以默认以空格分隔符的,例子如上
  16.  
  17. print('YinZhengJie'.swapcase()) # 将字符串中的大小写互换
  18.  
  19. print('yin zheng jie'.title()) # 将以空格为分隔符的所有的小写字母变大写
  20.  
  21. print('yinzhengjie'.zfill(50)) # 总共需要打印50个字符,如果字符串不够的话前面用0占位
  22.  
  23. #以上代码执行结果如下:
  24. {9$}85$7091115
  25. yinzhEngjiE
  26. ['yin', 'zheng', 'jie']
  27. ['', '', '', '', '']
  28. yINzHENGjIE
  29. Yin Zheng Jie
  30. 000000000000000000000000000000000000000yinzhengjie

 

四.字符串编码操作

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

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #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/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. name = "尹正杰"
  8.  
  9. v1 = name.encode(encoding="utf-8") #这就是对字符串做编码操作,将数据从字符串类型转换成二进制类型,但是显示的时候并不是“0”或者“1”哟,而是以十六进制显示。
  10. print(v1)
  11.  
  12. v2 = name.encode(encoding="gb2312")
  13. print(v2)
  14.  
  15. v3 = name.encode(encoding="gbk") #和上面操作一样,只不过我们这里指定这个字符串编码格式以“gbk”方式进行编码,这样我们就可以将这个数据写入到磁盘上去。
  16. print(v3)
  17.  
  18. v4 = v3.decode(encoding="gbk") #这里就是进行解码操作,需要传入V3编码的格式,如果格式和V3编码格式不一致就会报错哟!如:UnicodeDecodeError.
  19. print(v4)
  20.  
  21. v5 = v2.decode(encoding="gb2312")
  22. print(v5)
  23.  
  24. v6 = v1.decode(encoding="utf-8")
  25. print(v6)
  26.  
  27. #以上代码执行结果如下:
  28. b'\xe5\xb0\xb9\xe6\xad\xa3\xe6\x9d\xb0'
  29. b'\xd2\xfc\xd5\xfd\xbd\xdc'
  30. b'\xd2\xfc\xd5\xfd\xbd\xdc'
  31. 尹正杰
  32. 尹正杰
  33. 尹正杰

Python基础数据类型-字符串(string)的更多相关文章

  1. Python基础——数据类型——字符串

    整数.浮点数.布尔值的用法大同小异,而Python字符串的一些用法不易记住,这里以廖雪峰教程为基础,进行一些思考和复习总结. 字符串是什么? 以单引号'或者双引号"括起来的任意文本,比如:& ...

  2. Python基础数据类型之字符串

    Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...

  3. 1--Python 入门--Python基础数据类型

    一.Python基础语法 初次使用Python,首先要明确三点: Python的标识符(例如变量名.函数名等),可用字母.数字和下划线构成,不能以数字开头,且区分大小写. Python对于缩进敏感.在 ...

  4. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  5. GoLang基础数据类型--->字符串处理大全

    GoLang基础数据类型--->字符串处理大全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:   高级运维工程师之路               59843264 ...

  6. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  7. python基础数据类型考试题

    Python基础数据类型考试题 考试时间:两个半小时                      满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...

  8. python 基础数据类型之list

    python 基础数据类型之list: 1.列表的创建 list1 = ['hello', 'world', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ...

  9. Python基础数据类型题

    Python基础数据类型 题考试时间:三个小时 满分100分(80分以上包含80分及格)1,简述变量命名规范(3分) 1.必须是字母,数字,下划线的任意组合. 2.不能是数字开头 3.不能是pytho ...

随机推荐

  1. 2017BUAA软工个人作业Week1

    大概的功能已经满足 暂时只能用debug中的exe文件 正在改进... https://github.com/qwellk/project1/tree/product1 PSP2.1 Personal ...

  2. VM虚拟机—JVM内存

    JVM在运行时将数据划分为了5个区域来存储,这5个区域图示如下: 其中方法区和堆对是所有线程共享的内存区域:而java栈.本地方法栈和程序员计数器是运行时线程私有的内存区域. 首先我们熟悉一下一个 J ...

  3. vCenter机器查找功能不可用的解决

    1. 公司内有多个vCenter机器, 不同的部门 组别 有不通的vCenter来进行管理 最近发现有一个管理比较多的组别的vCenter下载远程登录的情况下总是无法进行高级搜索  造成想找一个虚拟机 ...

  4. 一本通1587【例 3】Windy 数

    1587: [例 3]Windy 数 时间限制: 1000 ms         内存限制: 524288 KB 题目描述 原题来自:SCOI 2009 Windy 定义了一种 Windy 数:不含前 ...

  5. BZOJ3732Network——kruskal重构树+倍增+LCA/最小生成树+倍增

    题目描述 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 & ...

  6. AGC005F Many Easy Problems(NTT)

    先只考虑求某个f(k).考虑转换为计算每条边的贡献,也即该边被所选连通块包含的方案数.再考虑转换为计算每条边不被包含的方案数.这仅当所选点都在该边的同一侧.于是可得f(k)=C(n,k)+ΣC(n,k ...

  7. Ubuntu 安装 hadoop

    安装完Linux后,我们继续(VMWare 安装 Linux  http://blog.csdn.net/hanjun0612/article/details/55095955) 这里我们开始学习安装 ...

  8. hdu 3397 Sequence operation (线段树 区间合并 多重标记)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3397 题意: 给你一串01串,有5种操作 0. 区间全部变为0 1.区间全部变为1 2.区间异或 3.询问 ...

  9. xml文件格式化后不能获取到值

    在有些时候,我们要使用到xml文件,必须得将文件中的内容压缩成一行,才能读取到其中的值,一旦有换行符.制表符.空格之类的就读不到.所以只能在开发好以后,将代码压缩再执行,十分不方便. 尝试了几个替换符 ...

  10. 软Raid5制作

    以raid5为例: 1.添加4块磁盘要求:容量.转速.接口一样的硬盘. 2.创建分区并修改ID[root@localhost ~]# fdisk /dev/sdb[root@localhost ~]# ...