python学习之:字符串

偷了几天懒(到个人训练题摸了几天鱼。。),今天要求自己看完了字符串,好像还挺简单的,有些函数库使得比C/C++操作要简单好多


一、字符串基本操作


1、创建并赋值、索引、分片

PS:由于字符串是不可变的,所以字符串做不了分片赋值

>>> string='hello,world'
>>> string[-5:]
	       
'world'
>>> string[0:5]
	       
'hello'

2、转义字符

python字符串赋值不用引号 python字符串怎么赋值_python字符串赋值不用引号

>>> print('精诚所至\n金石为开')
	  
精诚所至
金石为开




二、字符串格式化


此格式化非彼格式化

字符串格式化使用操作符百分号(%)实现
(当然%也可以用作取余操作)

1、字符串格式化符号

python字符串赋值不用引号 python字符串怎么赋值_字符串格式化_02

>>> 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