在python语言中字符串对象拥有非常非常多的处理方法,利用好这此方法可以成为我们处理字符型数据的一把利器。

主要分为以下几类

一、查询类

index(),rindex(),count(),startswith(),endswith()

二、格式输出类

format(),"f"型字符嵌入,ljust(),rjust(),center()

三、分离、组合类

split(),join(),rsplit()

四、英文大小写转换类

lower(),upper().swapcase(),title(),capitalize()

五、字符数据清洗类

replace(),strip(),rstrip(),lstrip()

六、编码、解码类

encode(),decode(),maketrans(),translate()


Python 通过字符串调用对象 python字符串对象方法_python

Python 通过字符串调用对象 python字符串对象方法_bc_02

>>> x = "不知何处吹芦管"
>>> x.encode('gbk') #使用国标编码
b'\xb2\xbb\xd6\xaa\xba\xce\xb4\xa6\xb4\xb5\xc2\xab\xb9\xdc'
>>> x.decode('gbk') #使用国标解码
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    x.decode('gbk') #使用国标解码
AttributeError: 'str' object has no attribute 'decode'
>>> x.encode('gbk').decode('gbk')   #上面失败的原因是x本身并没有改变,并没有变成编码形式,是不能解码的
'不知何处吹芦管'

>>> a = 2/3   #介绍format()字符串的使用
>>> print("{0:.7f}".format(a))  #在format()字符串中,':'前面是要输出的变量在format()中的槽位,也就是下标索引,":"后面可以加上输出格式描述符(对齐方式、填充符号、小数位,占位数等)
0.6666667
>>> print(f"{a:.2%}")  #这条语句使用了更加简洁的"f字符串",更加推荐使用,".2%"表示输出百分数,小数点后有两位
66.67%



>>> #下面是非常丰富的字符串方法
>>> #包括了index(),rindex(),count(),ljust(),rjust(),center(),split(),rsplit(),join()。有索寻字符内容,字符排版对齐,字符分隔,字符连接
>>> text = "桃花庵里桃花仙"
>>> text.index("桃")   #index返回要寻找内容第一次出现的位置,不存在此内容会抛出异常
0
>>> text.rindex("桃")  #rindex与index很类似,不过只是返回查找内容最后一次出现的位置
4
>>> text.count("花")   #统计该内容出现的次数
2
>>> text.count("桃花")
2
>>> text   #注意,我们对text进行了这么多的处理,它还是没有变化的,字符型在python是定义为不可变的对象,要改变大多情况也只是被重新赋值,重新生成了对象
'桃花庵里桃花仙'
>>> print(text.ljust(30))  #字符串左对齐输出
桃花庵里桃花仙                       
>>> print(text.rjust(30))  #字符串右对齐输出
                       桃花庵里桃花仙
>>> print(text.ljust(30,"@"))  #左对齐填充"@"输出
桃花庵里桃花仙@@@@@@@@@@@@@@@@@@@@@@@
>>> print(text.center(30,"^"))  #居中对齐填充"@"输出
^^^^^^^^^^^桃花庵里桃花仙^^^^^^^^^^^^
>>> newtext = "a b c d edf ga"
>>> newtext.split()   #split()中指定一个分隔符,之后返回一个列表,默认是空格为分隔符
['a', 'b', 'c', 'd', 'edf', 'ga']
>>> 'a,b,c,d'.split(',')  #以','为分隔符
['a', 'b', 'c', 'd']
>>> newtext.split(maxsplit = 3)  #最多可以切三刀
['a', 'b', 'c', 'd edf ga']
>>> newtext.rsplit(maxsplit = 2) #从右向左切,最多切两刀
['a b c d', 'edf', 'ga']
>>> print(newtext)  #!!newtext仍然还是没有变化的
a b c d edf ga
>>> ','.join([3,1,15,51,64])   #join的最常用是把一个列表返回一个字符串
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    ','.join([3,1,15,51,64])   #join的最常用是把一个列表返回一个字符串
TypeError: sequence item 0: expected str instance, int found
>>> ','.join(['3','1','15','51','64'])  #上面的列表成员必须是字符型才可以哦
'3,1,15,51,64'


>>> #下面介绍字符串的lower(),upper(),capitalize(),title(),swapcase()
>>> abc = "defGHiC"
>>> abc.lower()   #返回一个原字符串均是小写字母的对象
'defghic'
>>> abc.upper()   #返回一个原字符串均是大写字母的对象
'DEFGHIC'
>>> abc.swapcase()  #大转小,小转大
'DEFghIc'
>>> 'the cat on the mat'.title()  #英语标题大多数单词均要开头大写,此方法把所有单词开头变为大写后返回
'The Cat On The Mat'
>>> abc.startswith('d'),abc.endswith('c')  #测定指定字符是不是开头字符或者结尾字符,是则返回True,否则返回false
(True, False)




>>> #strip(),rstrip(),lstrip()方法
>>> b = '     \n  0000  '
>>> b.strip()   #去除两侧的空白字符
'0000'
>>> b.lstrip()  #去除一侧空白字符
'0000  '
>>> b.rstrip()  #去除右侧空白字符
'     \n  0000'
>>> b  #b还是没有改变滴
'     \n  0000  '



>>> #replace(),maketrans(),translate()方法
>>> c = "一闪一闪亮晶晶,满头都是草青青"
>>> c.replace("青","清")    #第一个参数是被换的旧字符,第二个字符是新字符
'一闪一闪亮晶晶,满头都是草清清'
>>> #maketrans()和trasnlate()允许我们按自己的习惯,使用一套自己规定的字符映射表,一个编码转换,一个解码翻译
>>> d = ''.maketrans("又送王孙去","萋萋满别情")
>>> '又去送王孙'.translate(d)
'萋情萋满别'
>>> num = ''.maketrans("1234567890","一二三四五六七八九零")
>>> '098234241341352'.translate(num)
'零九八二三四二四一三四一三五二'