经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python学习笔记:第3天 字符串的操作
来源:cnblogs  作者:zhipengzhu  时间:2018/10/22 16:28:59  对本文有异议

目录

1. python的数据类型

  1. int 整数
  2. str 字符串。一般不会用字符串保存大量的数据
  3. bool 布尔值:TrueFalse
  4. list 可以存放大量的数据(可以任意的数据类型)
  5. dict 字典 => key: value 查找数据的速度快
  6. set 集合,特点:无序、不能重复
  7. bytes 字节数,程序能够处理
  8. tuple 元组:不可变的列表

2. int类型的操作

bit_lenght() 计算这个数字二进制的长度

  • 二进制: 0和1,逢二进一
  • 八进制: 0到7,逢八进一
  • 十六进制: 0到F,逢十六进一
  1. In [1]: a = 12 # 12的二进制形式为:1100
  2. In [2]: a.bit_length()
  3. Out[2]: 4

3. bool类型

大部分对象都可以参与布尔运算:

4. 字符串的操作

字符串是Python中最常用的数据类型,我们可以使用引号(‘或”)来创建字符串。

  1. s1 = 'abc'
  2. s2 = "def"
  3. s3 = ''' # 三引号可以创建多行字符串
  4. aaaa
  5. bbbb
  6. '''

4.1 索引和切片

索引:索引就是下标,下标是从0开始的

  1. In [1]: s = '012345678'
  2. In [2]: s[2]
  3. Out[2]: '2'
  4. In [3]: s[-2] # 也可以使用负数从后面开始索引
  5. Out[3]: '7'

切片

使用方法:s1[startIndex:endIndex:step]

  • 从starIndex切片到endIndex,但是不包括endIndex
  • step参数为切片的步长,如果是正数则从左到右;如果是负数则从右到左(不写则默认为1)
  1. In [4]: s[4:] # startIndex不填默认是切片到最后
  2. Out[4]: '45678'
  3. In [5]: s[::] # startIndex和endIndex都不填默认是整个字符串
  4. Out[5]: '012345678'
  5. In [6]: s[::-1] # 如果step的值为负数的时是把整个字符顺序倒过来处理
  6. Out[6]: '876543210'
  7. In [7]: s[-1: -5] # 如果step的值不填(默认为1),这样取不到想要的字符,从-1再往右已经没有字符了
  8. Out[7]: ''
  9. In [8]: s[-1: -5:-1] # 把step的值设为-1后就可以从右往左切片
  10. Out[8]: '8765'
  11. In [9]: s[:-1]
  12. Out[9]: '01234567'
  13. In [11]: s[2::2] # step设为2时,每隔2个取一个值
  14. Out[11]: '2468'
  15. In [12]: s[-2::-2] # 设置为-2时,从后面往前面切片,每2个取一个
  16. Out[12]: '7531'

4.2 字符串的相关操作方法

切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的

1. 字符串重要的几个方法

  1. upper() # 把字符串全部转换成大写
  2. lower() # 把字符串全部转换成小写
  3. strip([chars]) # 去掉字符两边的空白字符,制表符\t和回车符\n等,如果给了指定的参数xx,就去掉字符串两边的xx字符
  4. lstrip([chars]) # 去掉左边指定的字符
  5. rstrip([chars]) # 去掉右边指定的字符
  6. replace(old, new[, count]) # 用new字符替换掉old字符,count值没有指定默认时替换所有的字符
  7. split(sep=None, maxsplit=-1) # 以指定的符号分割字符串,用于分割的字符不会在分割后的结果中,并且返回一个列表
  8. rsplit(sep=None, maxsplit=-1) # 从右边起分割字符串,maxsplit可以指定最大分割次数
  9. lsplit(sep=None, maxsplit=-1) # 从左边起开始分割
  10. index(sub[, start[, end]]) # 获取指定字符串第一次出现的位置(即索引),start和end可以指定范围,如果找不到会出ValueError的异常
  11. find(sub[, start[, end]]) # 跟index的作用一样,但当找不到结果时或返回-1而不会报错
  12. startswith(prefix[, start[, end]]) # 判断字符串是不是以指定的字符开头,返回的时布尔值True和False
  13. endswith((suffix[, start[, end]]) # 判断字符串是不是以指定的字符结尾
  1. In [1]: s = '__abCDef '
  2. In [2]: s.upper() # 字符全部转换成大写
  3. Out[2]: '__ABCDEF '
  4. In [3]: s.lower() # 字符全部转换成大写
  5. Out[3]: '__abcdef '
  6. In [4]: s.strip() # 默认是除去两边的空白字符
  7. Out[4]: '__abCDef'
  8. In [5]: s.strip('_') # 可以指定删除字符两边指定的字符
  9. Out[5]: 'abCDef '
  10. In [6]: s.lstrip('_') # lstrip只删除左边指定的字符
  11. Out[6]: 'abCDef '
  12. In [7]: s.replace(' ', '-') # 查找对应的字符并替换成新的字符
  13. Out[7]: '__abCDef----'
  14. In [10]: s.replace('_', '*', 1) # 指定count参数可以设置要替换的次数,默认是全部替换
  15. Out[10]: '*_abCDef '
  16. In [11]: s2 = '游戏abc篮球'
  17. In [12]: s2.split('abc') # 以指定字符分割字符串,返回的数据类型是列表
  18. Out[12]: ['游戏', '篮球']
  19. In [13]: s2.split('游戏abc篮球') # 如果分割后为空字符也会返回一个列表,列表里面是2个空字符串元素
  20. Out[13]: ['', '']
  21. In [14]: s2.index('篮球') # 查找对应字符串所在的索引位置
  22. Out[14]: 5
  23. In [15]: s2.index('d') # 找不到时会抛出ValueError异常
  24. ---------------------------------------------------------------------------
  25. ValueError Traceback (most recent call last)
  26. <ipython-input-15-46668276bfcb> in <module>
  27. ----> 1 s2.index('d')
  28. ValueError: substring not found
  29. In [16]: s2.find('d') # 跟index一样查找字符所在的索引,但是找不到时会返回-1而不是报错
  30. Out[16]: -1
  31. In [17]: s2.startswith('游戏') # 判断字符串是否以‘游戏’开头,返回布尔值
  32. Out[17]: True
  33. In [18]: s2.endswith('篮球') # 判断字符串是否以‘篮球结尾’
  34. Out[18]: True

2. 大小写转换

  1. capitalize() # 首字母大写
  2. swapcase() # 大小写互相转换
  3. title() # 每个被特殊字符隔开的字??字??写
  4. casefold() # 转换成?写,但是这个最所有的字符都有效(如东欧的等)

3. 格式化输出

使用字符串的format可以更直观的输出

  1. In [19]: print('我是{}来自{},我喜欢{}'.format('Jerry', '南方', '打篮球'))
  2. 我是Jerry来自南方,我喜欢打篮球
  3. In [20]: print('我是{2}来自{0},我喜欢{1}'.format('Jerry', '南方', '打篮球'))
  4. 我是打篮球来自Jerry,我喜欢南方
  5. In [21]: print('我是{name}来自{place},我喜欢{hobby}'.format(name='Jerry', hobby='打篮球', place='南方'))
  6. 我是Jerry来自南方,我喜欢打篮球
  7. In [22]: print('{:5d} {:2.3f}'.format(12, 12.143233234)) # 5d
  8. 12 12.143
  9. # {:5d} 的意思是替换为5个字符宽度的整数,宽度不足则使用空格填充
  10. # {:7.3f}的意思是替换为为7个字符宽度的保留两位的小数,小数点也算一个宽度,宽度不足则使用空格填充。其中7指宽度为7,.2f指保留两位小数。

4. 条件判断

  1. isalpha() # 是否由字符组成
  2. isdigit() # 是否由数字组成
  3. isalnum() # 是否由数字和字符组成
  4. isdecimal() # 是否由小数组成
  5. isnumeric() # 是否由数字组成(中文形式的数字也能识别)

5. 计算字符串的?度

使用len可以计算字符串的长度

len([数据]) # 使用len函数可以计算字符串,列表、元组和字典等也都可以使用

6. 其他方法

  1. center(10, "*") # 拉?成10, 把原字符串放中间.其余位置补*
  2. count("a") # 查找"a"出现的次数

5. for循环

使?for循环可以遍历(获取)字符串中的每?个字符,使用语法:

  1. for 变量 in 可迭代对象:
  2. 循环语句

可迭代对象:可以理解为能?个?个往外取值的对象

使用while遍历一个字符串的方法:

  1. s = "?家好, 我是VUE, 前端的?朋友们. 你们好么?"
  2. index = 0
  3. while index < len(s19):
  4. print(s[index]) # 利?索引切?来完成字符的查找
  5. index = index + 1

但是如果使用for循环:

  1. s = "?家好, 我是VUE, 前端的?朋友们. 你们好么?"
  2. for c in s19:
  3. print(c)
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号