python的字符串操作

python学习笔记之字符串操作

1 字符串操作

1.1 字符串是一种线性结构

1
a = 'learn python'
1
2
for i in a:
print(i)
l
e
a
r
n
 
p
y
t
h
o
n

1.2 字符串是不可变的

1
a[1]
'e'
1
a[1] = 'L'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-5-74f3af69d7f0> in <module>()
----> 1 a[1] = 'L'


TypeError: 'str' object does not support item assignment

1.3 字符串格式化

  • %格式化操作符号

以元组方式

1
'%s learn python' % ('zhaochj',)
'zhaochj learn python'
1
'%s learn python,%s is a man' % ('zhaochj','zhaochj')
'zhaochj learn python,zhaochj is a man'

以字典方式

1
'%(name)s learn python' % {'name':'zhaochj'}
'zhaochj learn python'
1
'%(name)s learn python,%(name)s is a man' % {'name':'zhaochj'}
'zhaochj learn python,zhaochj is a man'
  • format方法
1
'{0} learn python,{name} is a man'.format('zhaochj',name='he')
'zhaochj learn python,he is a man'

1.4 字符串的常用操作

  • 字符串连接join
1
lst = ['zhoachj','learn','python']
1
' '.join(lst)
'zhoachj learn python'
1
'_'.join(lst)
'zhoachj_learn_python'
1
2
3
4
5
ret = ''
for s in lst:
ret += s
ret += ' '
ret
'zhoachj learn python '
  • 字符串切割,常用操作有:split,rsplit,splitlines,partition,rpartition

split,从左往右按照给定的标准切割字符串,默认是以空格为切割,返回一个列表

1
s = 'zhaochj learn python'
1
s.split()   #split默认以空格切割,并返回一个list
['zhaochj', 'learn', 'python']
1
s.split('o') #指定分割的标准为字母'o'
['zha', 'chj learn pyth', 'n']
1
s.split('o',1) #限制分割的次数
['zha', 'chj learn python']
1
User = 'root:x:0:0:root:/root:/bin/bash'   #如何获取用户名称
1
User.split(':',1)
['root', 'x:0:0:root:/root:/bin/bash']
1
username,_ = User.split(':',1)  #'_'表示占位,丢掉此位置上的元素
1
username
'root'
1
User.split(':',1)[0]  #这样也可得到用户名称
'root'

rsplit,从右往左按照给定的标准切割字符串,默认是以空格为切割,返回一个列表

1
User2 = 'root:x:0:0:root:/root:/bin/bash'
1
User2.rsplit(':',1)    #切割是从右开始往左的
['root:x:0:0:root:/root', '/bin/bash']

splitlines,一般是用来处理多行的字符串对象,它以换行符(\n)为标准切割多行字符串,并可给定一个keepend值来是否保留\n这个换行符,默认是False,表示不保留换行符。

1
2
3
4
str1 = '''
I love python
I also love linux
'''
1
str1   #输出的字串里有三个换行符
'\nI love python\nI also love linux\n'
1
str1.splitlines()   #不显示指定Ture或False,那默认为False,表示不保留换行符号
['', 'I love python', 'I also love linux']
1
str1.splitlines(True)   #指定`keepend`为`True`时,返回的列表里各元素保留换行符号
['\n', 'I love python\n', 'I also love linux\n']
1
str1.splitlines(False)  #这是默认行为,可不指定`False`
['', 'I love python', 'I also love linux']

partition,表示传入一个分隔符号,返回一个元组,元组里第一个元素是分割后的第一个字符,第二个元素是分隔符号,第三个元素切割后剩下的所有字符。(切割顺序是从左往右)

1
User3 = 'root:x:0:0:root:/root:/bin/bash'
1
User3.partition(':')   #表示以`:`为切割,返回一个元组
('root', ':', 'x:0:0:root:/root:/bin/bash')

rpartition,表示传入一个分隔符号,返回一个元组,元组里第一个元素是分割后的第一个字符,第二个元素是分隔符号,第三个元素切割后剩下的所有字符。(切割顺序是从右往左)

1
User4 = 'root:x:0:0:root:/root:/bin/bash'
1
User4.rpartition(':')
('root:x:0:0:root:/root', ':', '/bin/bash')
  • 字符串修改–字符的大小写修改,准确的说不应该叫修改,因为字符串是不可变对象。常用的操作有:capitalize,title,lower,upper,swapcase

capitalize,表示把字符串的首字母修改成大写,其他的所有字符都修改成小写

1
str2 = 'i LoVe pYthon'
1
str2.capitalize()
'I love python'
1
id(str2)
140153643362864
1
id(str2.capitalize())  #与str2字符串的id值不同,所以准确的说不应该叫字符串修改
140153643363440

title,表示把字符串中所有单词的首字母修改成大写,之外的所有符全部为小写

1
str3= 'i LoVe pYthon'
1
str3.title()
'I Love Python'

upper,表示把所有字符都修改成大写

1
str3.upper()
'I LOVE PYTHON'

lower,表示把所有字符修改为小写

1
str3.lower()
'i love python'

swapcase,表示把字符串的字符的大小写反转,即大写修改成小写,小写的修改成大写

1
str3
'i LoVe pYthon'
1
str3.swapcase()
'I lOvE PyTHON'
  • 字符串修改–填充,常用方法有:center,ljust,rjust

center,两边填充,此方法接收一个填充宽度,默认以此宽度个空格来填充字符,也可指定填充字符

1
str4 = 'python'
1
str4.center(19)  #默认以空格填充,str4字符串尽可能放在这19个字符的中间
'       python      '
1
str4.center(19,'*')  #指定填充的字符为*号
'*******python******'

ljust,左移右填充,表示把字符串左移后在右边填充指定字符,与center方法类似,接收一个填充宽度,默认是以空格填充,也可以指定填充字符

1
str4
'python'
1
str4.ljust(10)
'python    '
1
str4.ljust(10,'*')
'python****'

rjust,右移左填充,表示把字符串右移后在左边填充指定字符,与center方法类似,接收一个填充宽度,默认是以空格填充,也可以指定填充字符

1
str4
'python'
1
str4.rjust(10)
'    python'
1
str4.rjust(10,'*')
'****python'
  • 字符串修改–清除,常用方法有:strip,rstrip,lstrip

_strip_方法,表示清除字符串两边的一个空格或多个空格,换行符也同样适用

1
str5 = '   python       \n '
1
str5
'   python       \n '
1
str5.strip()
'python'

_rstrip_方法,表示只清除字符串右边的空格或换行符号(一个或多个)

1
str5.rstrip()
'   python'

_lstrip_方法,表示只清除字符串左边的空格或换行符号(一个或多个)

1
str5.lstrip()
'python       \n '
  • 字符串判断,常用方法有:startswith,endswith,isdigit,istitle,islower,isupper

startswith,表示判断一个字符串是以指定字符开头,返回bool值,可指定搜索判断的范围。

1
str6 = 'Python is a programming language'
1
str6.startswith('Python')
True
1
str6.startswith('is',7,30) #限定范围搜索开始字符是不是'is',从第7个字符开始,但不包含第7个字符
True

endswith,表示判断一个字符串是以指定字符结尾,返回bool值,可指定搜索判断的范围。

1
str6.endswith('language')
True
1
str6.endswith('is',2,9)  #包含第9个字符
True

isdigit,判断一个字符是不是数字,返回bool值

1
str7 = '40'
1
str7.isdigit()
True

istitle,判断字符串中每一个单词是否都都以大写字母开始,返回bool值

1
str8 = 'I Love Python'
1
str8.istitle()
True
1
str9 = 'I love Pyton'   #'love'这个单词的开头不是大写字母,所以返回False
1
str9.istitle()
False

islower,判断所有字符都是小写字母

isupper,判断所有字符都是大写字母

1
str9
'I love Pyton'
1
str9.islower()
False
1
str9.isupper()
False
1
str10 = 'i love python'
1
str10.islower()
True
1
str11 = 'I LOVE PYTHON'
1
str11.isupper()
True
  • 字符串查找与替换,常用方法:count,index,rindex,find,rfind,replace

_count_方法,表示统计指定字符出现的次数,可指定一个范围

1
str10 = 'I love python,I also love linux'
1
str10.count('o')  #统计字符'o'出现的次数
4
1
str10.count('o',10,30)  #指定范围,从第10个字符开始,但不包含第10的个字符,至第30个字符结束,包含第30个字符
3
1
str10.count('love')  #也能统计一个字符串
2

_index_方法,从左往右查找,返回指定字符的索引,可指定范围

1
str10
'I love python,I also love linux'
1
str10.index('o')   #当查找字符串中有多个满足条件时返回第一个
3
1
str10.index('o',10,20)   #指定一个范围
11
1
str10[11]
'o'
1
str10.index('python')  #当查找的是一个字符串时,返回此字符串中第一个字符的索引值
7

_rindex_方法,表示从右往左查找,返回查找字符的索引值,当然也可指定一个范围

1
str10
'I love python,I also love linux'
1
str10.rindex('o')
22
1
str10.rindex('python')
7

_find_方法,表示从左往右查找一个字符,若查找到了则返回相应的索引值,若没有查找到则返回’-1’,不会像index方法样会抛出异常,可指定范围查找

1
str10
'I love python,I also love linux'
1
str10.find('love')
2
1
str10.find('love',10)
21
1
str10.find('aaa')   #查找一个不存在的字符时返回'-1'
-1

_rfind_方法,表示从右往左查找一个字符,若查找到了则返回相应的索引值,若没有查找到则返回’-1’,不会像index方法样会抛出异常,可指定范围查找

1
str10
'I love python,I also love linux'
1
str10.rfind('love')
21

_replace_方法,表示替换指定的字符,可指定替换的次数

1
str10
'I love python,I also love linux'
1
str10.replace('love','like')   #当不指定替换次数时,默认为替换全部
'I like python,I also like linux'
1
str10.replace('love','like',1)  #指定替换次数为1
'I like python,I also love linux'
文章目录
  1. 1. 1 字符串操作
    1. 1.1. 1.1 字符串是一种线性结构
    2. 1.2. 1.2 字符串是不可变的
    3. 1.3. 1.3 字符串格式化
    4. 1.4. 1.4 字符串的常用操作
|