python 字符串操作速度_Python字符串操作

字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串.

创建字符串很简单,只要为变量分配一个值即可。例如:

s = 'Hello World!'

Python字符串属性方法操作:

1.字符串格式输出对齐

>>> str = "Python stRING"

>>> str.center(20) #生成20个字符长度,str排中间'Python stRING'

>>> str.ljust(20) #生成20个字符长度,str左对齐'Python stRING'

>>> str.rjust(20) #生成20个字符长度,str右对齐'Python stRING'

>>>

2.大小写转换

>>> str = "Python stRING"

>>> str.upper() #转大写

'PYTHON STRING'

>>> str.lower() #转小写

'python string'

>>> str.capitalize()     #字符串首为大写,其余小写

'Python string'

>>> str.swapcase() #大小写对换

'pYTHON STring'

>>> str.title() #以分隔符为标记,首字符为大写,其余为小写

'Python String'

3.字符串条件判断

>>> str = '01234'

>>> str.isalnum() #是否全是字母和数字,并至少有一个字符

True

>>> str.isdigit() #是否全是数字,并至少有一个字符

True

>>> str = 'string'

>>> str.isalnum() #是否全是字母和数字,并至少有一个字符

True

>>> str.isalpha() #是否全是字母,并至少有一个字符

True

>>> str.islower() #是否全是小写,当全是小写和数字一起时候,也判断为True

True

>>> str = "01234abcd"

>>> str.islower() #是否全是小写,当全是小写和数字一起时候,也判断为True

True

>>> str.isalnum() #是否全是字母和数字,并至少有一个字符

True

>>> str = ' '

>>> str.isspace() #是否全是空白字符,并至少有一个字符

True

>>> str = 'ABC'

>>> str.isupper() #是否全是大写,当全是大写和数字一起时候,也判断为True

True

>>> str = 'Aaa Bbb'

>>> str.istitle() #所有单词字首都是大写,标题

True

>>> str = 'string learn'

>>> str.startswith('str')               #判断字符串以'str'开头

True

>>> str.endswith('arn')               #判读字符串以'arn'结尾

True

4.字符串搜索定位与替换

>>> str='string lEARn'

>>> str.find('z') #查找字符串,没有则返回-1,有则返回查到到第一个匹配的索引

-1

>>> str.find('n') #返回查到到第一个匹配的索引

4

>>> str.rfind('n') #返回的索引是最后一次匹配的

11

>>> str.index('a') #如果没有匹配则报错

Traceback (most recent call last):

File "", line 1, in

ValueError: substring not found

>>> str.index("n") #同find类似,返回第一次匹配的索引值

4

>>> str.rindex("n") #返回最后一次匹配的索引值

11

>>> str.count('a') #字符串中匹配的次数

0

>>> str.count('n') #同上

2

>>> str.replace('EAR','ear') #匹配替换

'string learn'

>>> str.replace('n','N')

'striNg lEARN'

>>> str.replace('n','N',1)

'striNg lEARn'

>>> str.strip('n') #删除字符串首尾匹配的字符,通常用于默认删除回车符

'string lEAR'

>>> str.lstrip('n') #左匹配

'string lEARn'

>>> str.rstrip('n') #右匹配

'string lEAR'

>>> str = " tab"

>>> str.expandtabs() #把制表符转为空格

' tab'

>>> str.expandtabs(2) #指定空格数

' tab'

5.字符串编码与解码

>>> str = "字符串学习"

>>> str

'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe5\xad\xa6\xe4\xb9\xa0'

>>> str.decode('utf-8') #解码过程,将utf-8解码为unicode

u'\u5b57\u7b26\u4e32\u5b66\u4e60'

>>> str.decode("utf-8").encode('gbk') #编码过程,将unicode编码为gbk

'\xd7\xd6\xb7\xfb\xb4\xae\xd1\xa7\xcf\xb0'

>>> str.decode('utf-8').encode('utf-8') #将unicode编码为utf-8

'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe5\xad\xa6\xe4\xb9\xa0'

6.字符串分割变换

>> str = "Learn string"

>>> '-'.join(str)

'L-e-a-r-n- -s-t-r-i-n-g'

>>> li = ['Learn','string']

>>> '-'.join(li)

'Learn-string'

>>> str.split('n')

['Lear', ' stri', 'g']

>>> str.split('n',1)

['Lear', ' string']

>>> str.rsplit('n')

['Lear', ' stri', 'g']

>>> str.rsplit('n',1)

['Learn stri', 'g']

>>> str.splitlines()

['Learn string']

>>> str.partition('n')

('Lear', 'n', ' string')

>>> str.rpartition('n')

('Learn stri', 'n', 'g')

7.截取字符串

>>> str = '0123456789'

>>> print(str[0:3]) #截取第一位到第三位的字符

012

>>> print(str[:])#截取字符串的全部字符

0123456789

>>> print(str[6:])#截取第七个字符到结尾

6789

>>> print(str[:-3])#截取从头开始到倒数第三个字符之前

0123456

>>> print(str[2])#截取第三个字符

2

>>> print(str[-1])#截取倒数第一个字符

9

>>> print(str[::-1])#创造一个与原字符串顺序相反的字符串

9876543210

>>> print(str[-3:-1])#截取倒数第三位与倒数第一位之前的字符

78

>>> print(str[-3:])#截取倒数第三位到结尾

789

>>>

Python格式化字符串的 6种方式

几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型。而拼接字符串是必备的一种技能。今天,我跟大家一起来学习Python拼接字符串的七种方式。

1、来自C语言的%方式

>>> print('%s %s' %('hello','world'))

hello world

%号格式化字符串的方式继承自古老的C语言,这在很多编程语言都有类似的实现。上例的%s是一个占位符,它仅代表一段字符串,并不是拼接的实际内容。实际的拼接内容在一个单独的%号后面,放在一个元组里。

类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个16进制数),等等。%占位符既是这种拼接方式的特点,同时也是其限制,因为每种占位符都有特定意义,实际使用起来太麻烦了。

2、format() 拼接方式

>>> s1 = 'Hello {} ! My name is {}.' .format('world','梦徒')>>>print(s1)

Hello world! My name is 梦徒.

还有如下写法,

#!/usr/bin/env python

#coding:utf-8name= input('name:')

age= input('age:')

job= input('job:')

salary= input('salary:')

info= '''------------info of {_name} --------------Name:{_name}

Age:{_age}

Job:{_job}

Salary:{_salary}'''.format(_name=name,

_age=age,

_job=job,

_salary=salary)

print(info)

这种方式使用花括号{}做占位符,在format方法中再转入实际的拼接值。容易看出,它实际上是对%号拼接方式的改进。这种方式在Python2.6中开始引入。

3、面向对象模板拼接

>>> from stringimport Template>>> s = Template('${s1} ${s2}!')>>> print(s.safe_substitute(s1='Hello',s2='World'))

Hello World!

说实话,这种方法不太友好,处理个字符串感觉要面向对象了,了解就行.

4、常用的 + 号方式

s1 = 'Hello World !'s2= 'My name is 梦徒!'print(s1+s2)

Hello World!My name is 梦徒!

5、join()拼接方式

>>> str_list = ['Hello','World']>>> s_join = ''.join(str_list)>>>print(s_join)

HelloWorld>>> s_join = ' '.join(str_list)>>>print(s_join)

Hello World>>> s_join = '-'.join(str_list)>>>print(s_join)

Hello-World

str对象自带的join()方法,接受一个序列参数,可以实现拼接。拼接时,元素若不是字符串,需要先转换一下。可以看出,这种方法比较适用于连接序列对象中(例如列表)的元素,并设置统一的间隔符。

当拼接长度超过20时,这种方式基本上是首选。不过,它的缺点就是,不适合进行零散片段的、不处于序列集合的元素拼接。

6、f-string方式

>>> s1 = 'World'

>>> s2 = '梦徒'

>>> words = f'Hello {s1}. My name is {s2}.'

>>>print(words)

Hello World. My nameis 梦徒.

f-string方式出自PEP 498(Literal String Interpolation,字面字符串插值),从Python3.6版本引入。其特点是在字符串前加 f 标识,字符串中间则用花括号{}包裹其它字符串变量。

这种方式在可读性上秒杀format()方式,处理长字符串的拼接时,速度与join()方法相当。

尽管如此,这种方式与其它某些编程语言相比,还是欠优雅,因为它引入了一个 f 标识。而其它某些程序语言可以更简练,比如shell:

s1="world"s2="梦徒"words="Hello ${s1}. My name is ${s2}."echo $words>>>Hello world. My name is 梦徒.

总结一下,我们前面说的“字符串拼接”,其实是从结果上理解。若从实现原理上划分的话,我们可以将这些方法划分出三种类型:

格式化类:%、format()、template

拼接类:+、join()

插值类:f-string

当要处理字符串列表等序列结构时,采用join()方式;拼接长度不超过20时,选用+号操作符方式;长度超过20的情况,高版本选用f-string,低版本时看情况使用format()或join()方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值