python学习之:字符串
偷了几天懒(到个人训练题摸了几天鱼。。),今天要求自己看完了字符串,好像还挺简单的,有些函数库使得比C/C++操作要简单好多
一、字符串基本操作
1、创建并赋值、索引、分片
PS:由于字符串是不可变的,所以字符串做不了分片赋值
>>> string='hello,world'
>>> string[-5:]
'world'
>>> string[0:5]
'hello'
2、转义字符
>>> print('精诚所至\n金石为开')
精诚所至
金石为开
二、字符串格式化
此格式化非彼格式化
字符串格式化使用操作符百分号(%)实现
(当然%也可以用作取余操作)
1、字符串格式化符号
>>> print('hello,%s'%'world')
hello,world
>>> print('小智今年%s岁了'%10)
小智今年10岁了
>>> print('小智今年%d岁了'%10)
小智今年10岁了
其中关于%f和C一样可以指定精度值和字段宽度,感觉很多操作都很类似
>>> print('圆周率PI的值为:%f'%3.14)
圆周率PI的值为:3.140000
>>> print('圆周率PI的值为:%.2f'%3.14)
圆周率PI的值为:3.14
>>> print('圆周率PI的值为:%10f'%3.141593)
圆周率PI的值为: 3.141593
>>> print('保留2位小数字段宽度为,圆周率PI的值为:%10.2f'%3.141593)
保留2位小数字段宽度为,圆周率PI的值为: 3.14
>>> print('保留2位小数字段宽度为10,圆周率PI的值为:%10.2f'%3.141593)
保留2位小数字段宽度为10,圆周率PI的值为: 3.14
>>> print('保留2位小数字段宽度为10,圆周率PI的值为:%-10.2f'%3.141593)
保留2位小数字段宽度为10,圆周率PI的值为:3.14
同时还可以字符串精度获取
>>> print('字符串精度获取:%.5s'%('hello world'))
字符串精度获取:hello
2、字符串格式化元组
>>> print('今年是%s年,中国女排夺得本届奥运会%s,中国共获得%d枚金牌'%('2016','冠军',26))
今年是2016年,中国女排夺得本届奥运会冠军,中国共获得26枚金牌
>>> print('今年是%s年,中国女排夺得本届奥运会%s,中国共获得%d枚金牌'%'2016','冠军',26)
Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
print('今年是%s年,中国女排夺得本届奥运会%s,中国共获得%d枚金牌'%'2016','冠军',26)
TypeError: not enough arguments for format string
可以看到元组必须用圆括号()括起来
三、字符串方法
也就是“毫不讲道理”的第三方库友
1、find()
用来检测字符串中是否包含子字符串;
语法如下:
str.find(str,begin=0,end=len(string))
例如:
>>> string='do it now'
>>> string.find('do')
0
>>> string.find('it')
3
>>> string.find('hello')
-1
可以看到不存在时,则返回-1,当然find()返回的不是布尔值,当返回0时,则表示在索引0处找到了子字符串
高级操作:提供起点、终点
>>> string='do it now'
>>> string.find('it',2)#提供起点
3
>>> string.find('it',5)
-1
>>> string.find('it',0,5)#提供起点和终点
3
>>> string.find('it',5,10)#提供起点和终点
-1
2、join()
用于将序列中的元素以指定字符连接成一个新字符串
语法:str.join(sequence)
例如:
>>> mark='+'
>>> field=['1','2','3','4','5']
>>> mark.join(field)
'1+2+3+4+5'
3、lower()方法
用于将字符串中所有大写字符转化为小写
语法如下:str.lower()
例如:
>>> string='DO IT NOW'
>>> print('调用lower得到字符串:',string.lower())
调用lower得到字符串: do it now
>>> string='DO IT NOW'
>>> string.find('It')
-1
>>> string.lower().find('It'.lower())
3
4、upper()方法
用于将字符串小写字符转换为大写字符
语法:str.upper()
例如:
>>> string1='do it now'
>>> string1.upper()
'DO IT NOW'
>>> string1.find('It')
-1
>>> string1.upper().find('It'.upper())
3
5、swapcase()方法
用于对字符串的大小写字母进行转换
语法如下:str.swapcase()
例如:
>>> string='Just do it,NOW'
>>> print('原字符串:',string)
原字符串: Just do it,NOW
>>> print('调用swapcase后得到的字符串:',string.swapcase())
调用swapcase后得到的字符串: jUST DO IT,now
6、replace()方法
把字符串中old(旧字符串)替换为new(新字符串),如果指定第三个参数max,替换次数不超过max次
语法如下:str.replace(old,new[,max])
例如:
>>> string='do it now,do right now'
>>> print('原字符串为:',string)
原字符串为: do it now,do right now
>>> print('新字符串为:',string.replace('do','Just do'))
新字符串为: Just do it now,Just do right now
>>> print('新字符串为:',string.replace('o','Just',1))
新字符串为: dJust it now,do right now
>>> print('新字符串为:',string.replace('o','Just',2))
新字符串为: dJust it nJustw,do right now
7、split()方法
用于通过指定分隔符对字符串进行切片
例如:
>>> string='do it now'
>>> print('不提供任何分割符分割后的字符串:',string.split())
不提供任何分割符分割后的字符串: ['do', 'it', 'now']
>>> print('提供i分割后的字符串为:',string.split('i'))
提供i分割后的字符串为: ['do ', 't now']
>>> print('提供o分割后的字符串为:',string.split('o'))
提供o分割后的字符串为: ['d', ' it n', 'w']
8、strip()方法
用于移除字符串头尾指定的字符(默认为空格)
语法如下:
str.strip([chars])
>>> string='---------do it now--------'
>>> print('原字符串:',string)
原字符串: ---------do it now--------
>>> print('新字符串:',string.strip('-'))
新字符串: do it now
>>> string2='------do------it-----now-----'
>>> print('原字符串:',string2)
原字符串: ------do------it-----now-----
>>> print('新字符串:',string2.strip('-'))
新字符串: do------it-----now
可以看到,strip()只能去除头尾的字符,中间匹配的字符不会去除
9、translate()方法
根据参数table给出的表转换字符串的字符,将要过滤掉的字符放到del参数中
(云里雾里…)
直接看样例:
>>> intab='adfas'
>>> outtab='12345'
>>> trantab=str.maketrans(intab,outtab)
>>> string='just do it'
>>>> print('string调用translate方法后:',string.translate(trantab))
string调用translate方法后: ju5t 2o it