初学python之字符串常见操作

简介:

 

字符串常见操作

转义,常见转义符为

 

R/r

In [31]: s ='c:\windows\nt'

 

In [32]:print(s)

c:\windows

t

 

加入转义符号

In [33]: s =R'c:\windows\nt'

 

In [34]:print(s)

c:\windows\nt

 

三引号的作用

In [35]: sql ="""

   ...: select  * from xxx where name = 'tom'

   ...: """

In [36]:print(sql)

select  *from xxx where name = 'tom'

 

 

join 字符串的拼接

In [39]: a ='abcd'

 

In [40]:'.'.join(a)

Out[40]:'a.b.c.d'

 

In [42]: ' #'.join(a)

Out[42]: 'a # b# c # d'

 

split 字符串分割转为元组

split  以某个为分界线,进行分割成若干个字符串

split  默认为从左向右分割

 

In [46]: s1

Out[46]:"I'm \ta super student"

In [47]:s1.split()

Out[47]:["I'm", 'a', 'super', 'student']

 

以super关键字进行切割

In [48]:s1.split('super')

Out[48]:["I'm \ta ", ' student']

 

以引号进行切割

In [6]:a.split("'")

Out[6]: ['I', 'mvery sorry']

 

以某个单词进行切割,可以发现sorry这个单词背

In [8]:a.split("sorry")

Out[8]:["I'm very ", '']

 

默认为遇空白字符进行分割

 

以关键字进行切分N段

以空格进行切割成某几个段,比如从第一个空格进行分段,那么第一个空格开始的为一段,剩余的段落为一个整段

In [18]: a = 'OnFriendship And a youth said'

 

In [19]:a.split(' ',1)

Out[19]: ['On','Friendship And a youth said']

 

以空格为准,分成两段,这样在分成第二个空格后面的整体又为一段

In [20]:a.split(' ',2)

Out[20]: ['On','Friendship', 'And a youth said']

 

 

 

rsplit 反向切分

一般用于取文件路径以及文件名效率比较高

取s1字符串中,以最后一个关键字为切割符,并将其最后分为1段(取反)

In [45]: s1

Out[45]:'/data0/python/projects'

 

In [46]:s1.rsplit('/',1)

Out[46]:['/data0/python', 'projects']

 

In [47]: s1 =r'/data0/python/projects/hello.txt'

 

In [48]:s1.rsplit('/',1)

Out[48]:['/data0/python/projects', 'hello.txt']

 

 

maxsplit 平均最大切分x段,与默认切段一样,都是以当前关键字依次向后切分

 

In [51]: a

Out[51]: 'OnFriendship And a youth said'

 

In [52]:a.split(' ',maxsplit=2)

Out[52]: ['On','Friendship', 'And a youth said']

 

aplitlines 按行切割

 

In [66]: a ="""

   ...: hello

   ...: python

   ...: enenhaha

   ...: """

 

In [67]: a

Out[67]:'\nhello\npython\nenenhaha\n'

 

In [68]:a.splitlines()

Out[68]: ['','hello', 'python', 'enenhaha']

 

splitlines会将回车和换行符(\n)都认为是一行

 

splitlines true

true 参数为保留特殊字符

In [87]: a

Out[87]: 'abc \nnde \r haha \n'

 

In [88]:a.splitlines()

Out[88]: ['abc', ' nde ', ' haha ']

 

In [89]:a.splitlines(True)

Out[89]: ['abc\n', ' nde \r', ' haha \n']

 

 

partition 以某个关键字为分割符 *

从左到右,将分隔字符切割成两部分

 

In [99]: a

Out[99]: 'NoPython documentation found for'

In [100]:a.partition('ython')

Out[100]: ('NoP', 'ython', ' documentation found for')

n [108]:len(a.partition('P'))

Out[108]: 3

 

In [101]:a.partition('Python')

Out[101]: ('No', 'Python', ' documentation found for')

n [108]:len(a.partition('P'))

Out[108]: 3

如果发现没有则将本身为head,并且将sep 和tail 全部被抹去

查看一个不存在的关键字:

n [102]:a.partition('HAHAHA')

Out[102]: ('NoPython documentation found for', '', '')

反向partition

rpartition

In [112]:a.rpartition('Python')

Out[112]: ('No', 'Python', ' documentation found for')

 

与正向不同的是,它只返回一个tail结尾

In [115]:a.partition('hahaha')

Out[115]: ('NoPython documentation found for', '', '')

 

In [116]:a.rpartition('hahaha')

Out[116]: ('','', 'No Python documentation found for')

 

这样用于筛取最后字段的话,更加方便

In [119]:a.partition('/')

Out[119]: ('','/', 'data0/python/projects/hello.txt')

 

In [120]:a.rpartition('/')

Out[120]:('/data0/python/projects', '/', 'hello.txt')

 

In [124]:a.rpartition('/')[-1]

Out[124]:'hello.txt'

 

字符大小写

upper()  全部转为大写

lower()  全部转为小写

In [139]: a.upper()

Out[139]: 'SUPERSTUDENT'

 

In [140]:a.upper().lower()

Out[140]: 'superstudent'

可以用于大小写判断时候用到

In [144]: b ='super'

In [145]: b in a

Out[145]: True

 

In [146]: b ina.upper()

Out[146]: False

 

swapcase()  互换大小写

In [151]:a.swapcase()

Out[151]: 'aBc'

 

In [152]: a

Out[152]: 'AbC'

 

 

字符串排版

首字母大写

In [153]: s1

Out[153]:"I'm \ta super student."

 

In [154]:s1.title()

Out[154]:"I'M \tA Super Student."

 

In [155]:s1.capitalize()

Out[155]:"I'm \ta super student."

 

字符填充

center 设置宽度

In [156]: s1 ='abc'

In [157]:s1.center(10)

Out[157]:'   abc    '

 

填充字符

In [158]: s1.center(10,'*')

Out[158]:'***abc****'

 

左右填充

zfill 、 just ,当位数不足以拟定的长度时,以字符0进行补齐

 

左填充

In [159]:s1.zfill(10)

Out[159]:'0000000abc'

 

 

右填充

In [162]: s1.ljust(10,'#')

Out[162]:'abc#######'

 

 

字符串修改  *

 

replace 替换,在字符中找到旧的字符将其替换为新的字符串,如果不指定count则全部替换

 

In [164]: a ='www.baidu.com'

 

In [165]:a.replace('w','p')

Out[165]:'ppp.baidu.com'

 

指定替换的次数

In [171]:a.replace('w','p',2)

Out[171]:'ppw.baidu.com'

In [172]: a ='www,www,www,www'

 

In [173]:a.replace('www','p',3)

Out[173]:'p,p,p,www'

 

字符都是以从左到右进行查找并替换,找到匹配的字符并且将其进行替换,如有连续的字符则当一次替换操作

In [175]:a.replace('w','python ',3)

Out[175]:'python python python ,www,www,www'

 

操作后为返回一个新的字符串,因为字符串本身是不可变的

 

strip  去掉空格  *

在字符串两端进行查找并去除指定的字符集

在输入的时候或者赋值的时候难免会出现一些空格或其他字符,如我们想过滤掉的话可以使用strip进行过滤

In [176]: enter= input('>>>')

>>> 23

 

In [177]: enter

Out[177]: ' 23'

 

去掉空格

In [179]:enter.strip()

Out[179]: '23'

 

 

strip主要将左右两边的多余空格进行过滤

In [180]: a ='en hahaha qie hoho   '

 

In [181]:a.strip()

Out[181]: 'enhahaha qie hoho'

 

将关键字进行过滤,先去掉再去掉

先去掉r再去掉y,返回移除字符串头尾指定的字符生成的新字符串

In [182]: a = 'Iam very very very sorry'

In [186]:a.strip('r y')

Out[186]: 'I amvery very very so'

 

在其取值的时候将其打散逐步去进行裁剪

In [218]:s.strip('r  y')

Out[218]: 'I amvery very very so'

 

In [236]:s.strip('r yve')

Out[236]: 'I amvery very very so'

 

In [237]:s.strip('r yso')

Out[237]: 'I amvery very ve'

 

In [238]:s.strip('r yso ')

Out[238]: 'I amvery very ve'

 

In [239]:s.strip('r yso')

Out[239]: 'I amvery very ve'

In [240]:s.strip('r yso er')

Out[240]: 'I amvery very v'

 

lstrip()  从左开始

In [264]:s.lstrip('I ysdfsdfam')

Out[264]: 'veryvery very sorry'

 

rstrip()  从右开始

In [270]:s.rstrip('I ysdfsdfam')

Out[270]: 'I amvery very very sorr'

 

 

字符串查找  *

rfind   从左到右

从-1开始查找

取当前第一个字符匹配的索引

In [294]:a.rfind('p',-1)

Out[294]: 11

返回值不能是负索引

 

 

index  与find几乎一致,找到返回的索引

 

In [320]:a.index('str')

Out[320]: 7

 

count 统计子串出现次数

统计某个特殊字符出现的次数

In [323]: a

Out[323]: 'object to str implicitly'

 

In [324]: a.count('o')

Out[324]: 2

 

统计某个范围字母出现的次数

In [326]: a.count('o',0,5)

Out[326]: 1

 

从某个索引位置开始统计次数

In [327]:a.count('o',5)

Out[327]: 1

 

时间复杂度

index和count方法都是O(n) 随着列表数据增大,而效率下降

len() 为O(1)

 

字符串判断  *

startwith 判断是否是以某个字母开头

In [333]:s.startswith('I am')

Out[333]: True

 

In [334]: s

Out[334]: 'I amvery very very sorry'

 

判断其步长开始的开头

 

In [337]: s

Out[337]: 'I amvery very very sorry'

 

In [338]:s.startswith('a',2)

Out[338]: True

 

判断长度范围内开头的字符

n [342]:s.startswith('a',2,100)

Out[342]: True

 

 

endwith() 判断结尾的字符

In [351]:s.endswith('y')

 

 

字符串判断is \ in

isidentifier  判断是否是字母和下划线开头,其他都是字母

In [361]: a

Out[361]: 'a5'

 

In [362]:a.isidentifier()

Out[362]: True

 

islower   判断全部小写

isupper   判断全部大写

isspace   判断是否包含空格

 

 

format  字符串格式化  

 

In [363]: a ="{server} {1}:{0}".format(8888,'192.168.1.100',server="webinfo")

 

In [364]:print(a)

web info192.168.1.100:8888

 

以元组下标方法

 

In [367]: a ="{0[0]}.{0[1]} ".format(('mage','com'))

 

In [368]:print(a)

mage.com

 

 

习题略



本文转自zuzhou 51CTO博客,原文链接:http://blog.51cto.com/yijiu/1968172


相关文章
|
11天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
27天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
29天前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
20 1
|
30天前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
16 0
|
1月前
|
Unix Shell Linux
赞!优雅的Python多环境管理神器!易上手易操作!
赞!优雅的Python多环境管理神器!易上手易操作!
|
1月前
|
数据挖掘 开发者 Python
Python:字符串判断子串
Python:字符串判断子串
|
1月前
|
索引 Python
Python系列(14)—— 字符串运算符
Python系列(14)—— 字符串运算符
|
11天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
3天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
11天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)

热门文章

最新文章