day4---字符串处理

1. 数值型

b = 125
print(b.bit_length())
>>>
7

2. 布尔型

布尔类型的值就两个:真(True)或假(False)

3. 字符串型

(1) 字符串索引

索引即下标,是字符串组成元素
元素下标从左至右,第一个元素下标为0

var = 'abcdefg'
print(var[0])
print(var[1])
print(var[-1])
print(var[-2])
>>>
a
b
g
f

(2) 字符串切片:

切片的作用就是通过索引截取字符串中的一部分,形成新的字符串,但不是修改原来的字符串,切片原则是顾头不顾尾。
(索引开头:索引结尾:步长)

var = 'abcdefg'
print(var[0:2])
print(var[:3]) # 索引开头位置为空代表从头开始
print(var[2:5])
print(var[3:]) # 索引结尾位置为空代表从头开始
print(var[0:-1:2])
print(var[-1:-2:-1])
print(var[1:-5:1])
print(var[2:-2:2])
print(var[-1:2:-3])
print(var[:]) # 索引开头和索引结尾都为空代表所有
ab
abc
cde
defg
ace
g
b
ce
gd
abcdefg

字符串切片的特点:

  • 索引的开头和结尾的位置可以不用指定下标
  • 索引的下标超出最大值时不会报错
  • 从左至右取值,默认步长为1
  • 步长为负数时,从右至左取值
  • 索引的开头和结尾的下标为负数,步长为正数时,从右往左查找,但是仍从左至右取值
  • 切片不会修改原字符串,但是可以把切片的值赋给另一个变量

(3) 字符串常用方法:

字符串的方法不会修改原字符串,形成了一个新的字符串

  • capitalize:把字符串首字母变成大写,剩下的所有字母变成小写

var = 'liYan iS yanGE'
print(var.capitalize())
>>>
Liyan is yange
  • upper:把字符串所有元素变成大写

var = 'liYan iS yanGE'
print(var.upper())
>>>
LIYAN IS YANGE
  • lower:把字符串所有元素变成小写

var = 'liYan iS yanGE'
print(var.lower())
>>>
liyan is yange
  • swapcase:把字符串大小写翻转(大写变小写,小写变大写)

var = 'liYan iS yanGE'
print(var.swapcase())
>>>
LIyAN Is YANge
  • title:以特殊符号隔开的字符或字符串首字母大写,剩下的所有字母变成小写

var = 'liYan iS yanGE'
print(var.title())
>>>
Liyan Is Yange
  • center:字符串居中,以指定填充物填满指定数量

var = 'liYan iS yanGE'
print(var.center(20))
print(var.center(25, '*'))
>>>
   liYan iS yanGE   
******liYan iS yanGE*****
  • startswith:以某个字符或字符串开头,支持切片,返回布尔值

var = 'liYan iS yanGE'
print(var.startswith('a'))
print(var.startswith('a', 3, 10))
>>>
False
True
  • endswith:以某个字符或字符串结尾,支持切片,返回布尔值

var = 'liYan iS yanGE'
print(var.endswith('a'))
print(var.endswith('a', 2, -3))
>>>
False
True
  • count:统计某个字符或字符串出现的次数,支持切片,若不存在则返回0

var = 'liYan iS yanGE'
print(var.count('a'))
print(var.count('a', 2, 8))
print(var.count('b'))
>>>
2
1
0
  • expandtabs:默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个

var = 'liYan iS yanGE\tyy'
print(var.expandtabs(), len(var.expandtabs()))
var1 = 'abc\t'
print(var1.expandtabs(), len(var1.expandtabs()))
var2 = 'abcdefghigklmn\t1'
print(var2.expandtabs(), len(var2.expandtabs()))
>>>
liYan iS yanGE  yy 18
abc      8
abcdefghigklmn  1 17
  • find:通过元素找到索引下标,若出现的次数多只找第一个,支持切片,找不到返回-1

var = 'liYan iS yanGE'
print(var.find('a'))
print(var.find('b'))
>>>
3
-1
  • index:通过元素找到索引下标,若出现的次数多只找第一个,支持切片,找不到会报错

var = 'liYan iS yanGE'
print(var.index('a'))
print(var.index('b'))
>>>
3
ValueError: substring not found
  • split:以指定字符分割字符串,默认以空格分割,从左往右分割,最终形成一个列表,但是列表不包括这个字符串

var = 'liYan iS yanGE'
print(var.split())
print(var.split('S'))
>>>
['liYan', 'iS', 'yanGE']
['liYan i', ' yanGE']
  • format:格式化输出字符串

info1 = 'My Name is {}, I\'m {}, I like drink {}!'.format('LiYan', 27, 'water')
print(info1)
info2 = '我叫{0}, 今年{1}岁,我喜欢喝{2},我朋友也叫{0}!'.format('李岩', 27, '水')
print(info2)
info3 = '我叫{name},我喜欢{it}, 我在{add}学习!'.format(name='yan', it='Python', add='老男孩')
print(info3)
>>>
My Name is LiYan, I'm 27, I like drink water!
我叫李岩, 今年27岁,我喜欢喝水,我朋友也叫李岩!
我叫yan,我喜欢Python, 我在老男孩学习!
  • strip:去除字符串两边的指定字符,默认去除空格,没有找到则不去除

var = 'liYan iS yanGE'
print(var.strip())
print(var.strip('l'))
print(var.strip('e'))
>>>
liYan iS yanGE
iYan iS yanGE
liYan iS yanGE
  • lstrip:去除字符串左边的指定字符,默认去除空格,没有找到则不去除

var = 'liYan iS yanGE'
print(var.lstrip())
print(var.lstrip('l'))
print(var.lstrip('e'))
>>>
liYan iS yanGE
iYan iS yanGE
liYan iS yanGE
  • rstrip:去除字符串右边的指定字符,默认去除空格

var = 'liYan iS yanGE'
print(var.rstrip())
print(var.rstrip('E'))
print(var.rstrip('e'))
>>>
liYan iS yanGE
liYan iS yanG
liYan iS yanGE
  • replace:替换字符串中的指定字符,默认全部替换,若不全部替换,后跟数量即替换的数量

var = 'liYan iS yanGE'
print(var.replace('a', 'aaa'))
print(var.replace(' ', '.', 1))
>>>
liYaaan iS yaaanGE
liYan.iS yanGE
  • isalnum:判断字符串是否由数字或字母组成

var = 'liYan123!'
print(var.isalnum())
var1 = 'liyan123'
print(var1.isalnum())
>>>
False
True
  • isalpha:判断字符串是否由字母组成

var = 'liYan123'
print(var.isalpha())
var1 = 'liyan'
print(var1.isalpha())
>>>
False
True
  • isdigit:判断字符串是否由数字组成

var = 'liYan123'
print(var.isdigit())
var1 = '123456'
print(var1.isdigit())
>>>
False
True
posted @ 2017-10-23 20:09  _岩哥  阅读(167)  评论(0)    收藏  举报