设为首页 加入收藏

TOP

Python字符串方法大全(三)
2018-06-09 10:07:59 】 浏览:726
Tags:Python 字符串 方法 大全

last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found


可以使用in操作符来判断字符串S是否包含子串sub,它返回的不是索引位置,而是布尔值。


>>> 'xy' in 'abxycd'
True
>>> 'xyz' in 'abxycd'
False


5.替换


5.1 replace


S.replace(old, new[, count])


将字符串中的子串old替换为new字符串,如果给定count,则表示只替换前count个old子串。如果S中搜索不到子串old,则无法替换,直接返回字符串S(不创建新字符串对象)。


>>> print('abcxyzoxy'.replace('xy','XY'))
abcXYzoXY
>>> print('abcxyzoxy'.replace('xy','XY',1))
abcXYzoxy
>>> print('abcxyzoxy'.replace('mn','XY',1))
abcxyzoxy


5.2 expandtabs


S.expandtabs(N)


将字符串S中的\t替换为一定数量的空格??默认N=8。


注意,expandtabs(8)不是将\t直接替换为8个空格。例如'xyz\tab'.expandtabs()会将\t替换为5个空格,因为"xyz"占用了3个字符位。


另外,它不会替换换行符(\n或\r)时。


例如:


>>> '01\t012\t0123\t01234'.expandtabs(4)
'01  012 0123    01234'


>>> '01\t012\t0123\t01234'.expandtabs(8)
'01      012    0123    01234'


>>> '01\t012\t0123\t01234'.expandtabs(7)
'01    012    0123  01234'


>>> print('012\t0123\n01234'.expandtabs(7))
012    0123
01234


5.3 translate和maketrans


S.translate(table)
 static str.maketrans(x[, y[, z]])


str.maketrans()生成一个字符一 一映射的table,然后使用translate(table)对字符串S中的每个字符进行映射。


如果你熟悉Linux,就知道tr命令,translate()实现的功能和tr是类似的。


例如,现在想要对"I love fairy"做一个简单的加密,将里面部分字符都替换为数字,这样别人就不知道转换后的这句话是什么意思。


>>> in_str='abcxyz'
>>> out_str='123456'


# maketrans()生成映射表
>>> map_table=str.maketrans(in_str,out_str)


# 使用translate()进行映射
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love f1ir5


注意,maketrans(x[, y[, z]])中的x和y都是字符串,且长度必须相等。


如果maketrans(x[, y[, z]])给定了第三个参数z,这这个参数字符串中的每个字符都会被映射为None。


例如,不替换"o"和"y"。


>>> in_str='abcxyz'
>>> out_str='123456'
>>> map_table=str.maketrans(in_str,out_str,'ay')
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love fir


6.分割


6.1 partition和rpartition


S.partition(sep)
 S.rpartition(sep)


搜索字符串S中的子串sep,并从sep处对S进行分割,最后返回一个包含3元素的元组:sep左边的部分是元组的第一个元素,sep自身是元组的二个元素,sep右边是元组的第三个元素。


partition(sep)从左边第一个sep进行分割,rpartition(sep)从右边第一个sep进行分割。


如果搜索不到sep,则返回的3元素元组中,有两个元素为空。partition()是后两个元素为空,rpartition()是前两个元素为空。


例如:


# 只搜索到一个sep时,两者结果相同
>>> print('abcxyzopq'.partition('xy'))
('abc', 'xy', 'zopq')
>>> print('abcxyzopq'.rpartition('xy'))
('abc', 'xy', 'zopq')


# 搜索到多个sep时,分别从左第一个、右第一个sep分割
>>> print('abcxyzxyopq'.partition('xy'))
('abc', 'xy', 'zxyopq')
>>> print('abcxyzxyopq'.rpartition('xy'))
('abcxyz', 'xy', 'opq')


# 搜索不到sep
>>> print('abcxyzxyopq'.partition('xyc'))
('abcxyzxyopq', '', '')
>>> print('abcxyzxyopq'.rpartition('xyc'))
('', '', 'abcxyzxyopq')


6.2 split、rsplit和splitlines


S.split(sep=None, maxsplit=-1)
 S.rsplit(sep=None, maxsplit=-1)
 S.splitlines([keepends=True])


都是用来分割字符串,并生成一个列表。


split()根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为"-1",则会从做向右搜索并且每遇到sep一次就分割直到搜索完字符串。如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格。


rsplit()和split()是一样的,只不过是从右边向左边搜索。


splitlines()用来专门用来
Python字符串方法大全(三) https://www.cppentry.com/bencandy.php?fid=54&id=170265

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java泛型实例详解 下一篇Java高并发之线程池详解