python学习笔记:使用字符串

by admin on 2019年9月5日

基本字符串操作

一、字符串的两种表示法

python字符串格式化之学习笔记,python学习笔记

在python中格式化输出字符串使用的是%运算符,通用的样式为

•格式标识字符串 % 要出口的值组
中间,侧面部分的”格式标识字符串“能够完全和c中的一致。侧边的’值组’假诺有多少个及以上的值则须要用小括号括起来,中间用短号隔绝。入眼来看左边包车型大巴片段。左侧部分的最简便款式为:

•%cdoe
里头的code有多样,可是出于在python中,全数东西都足以调换到string类型,因而,若无啥样出格需求完全可以整个采取’%s‘来标志。比方:

•’%s %s %s’ % (1, 2.3, [‘one’, ‘two’, ‘three’])
它的输出为’1 2.3 [‘one’, ‘two’,
‘three’]’,便是遵照%左侧的号子输出的。即便第多少个和第二值不是string类型,同样未有失水准。在这一个进程中,当计算机开采第一个值不是%s时,会先调用整型数的函数,把第八个值也正是1转成string类型,然后再调用str()函数来输出。前面说过还大概有一个repr()函数,假诺要用那个函数,能够用%r来标志。除了%s外,还应该有大多类似的code:

字符串格式化:

代码如下 复制代码
format = “hello %s, %s enough for ya?”
values = (‘world’,’hot’)
print format % values
结果:hello world, hot enough for ya?

注:2.7可以。3.0不行

3.0要用print(format % values) 要用括号括起来。

与php类似但函数或方法名不雷同的地点:

explode/” target=”_blank”>php explode=> python split
php trim => python strip
奥门威尼斯网址,php implode => python join

干活中格式化字符串时相遇了UnicodeDecodeError的要命,所以讨论下字符串格式化的相干文化和我们大饱眼福。

代码如下 复制代码
C:Userszhuangyan>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit
(Intel)] on win
32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> a = ‘你好世界’
>>> print ‘Say this: %s’ % a
Say this: 你好世界
>>> print ‘Say this: %s and say that: %s’ % (a, ‘hello
world’)
Say this: 你好世界 and say that: hello world
>>> print ‘Say this: %s and say that: %s’ % (a, u’hello
world’)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc4 in position 10:
ordinal
not in range(128)

见到print ‘Say this: %s and say that: %s’ % (a, u’hello world’)
那句报的UnicodeDecodeError错误了啊,和上句的区分只是把’hello world’改成
u’hello world’的因由,str对象变成了unicode对象。但难题是,’hello
world’只是单独的希腊语字符串,不分包别的ASCII之外的字符,怎会不能decode呢(www.111cn.net)?再留心看看那多少个附带的message,里面涉及了0xe4,那几个明显不是’hello
world‘里面的,所以不得不狐疑那句粤语了。

>>> a ‘xc4xe3xbaxc3xcaxc0xbdxe7’

把它的字节类别打字与印刷了出来,果然即是它,第多少个正是0xe4。

总的来讲在字符串格式化的时候Python试图将a
decode成unicode对象,并且decode时用的依旧私下认可的ASCII编码而非实际的UTF-8编码。那那又是怎么回事呢??上面继续我们的考试:

代码如下 复制代码
>>> ‘Say this: %s’ % ‘hello’
‘Say this: hello’
>>> ‘Say this: %s’ % u’hello’
u’Say this: hello’
>>>

有心人看,’hello’是惯常的字符串,结果也是字符串(str对象),u’hello’形成了unicode对象,格式化的结果也形成unicode了(注意结果早先的那几个u)。

看看Python文书档案怎么说的:

If format is a Unicode object, or if any of the objects being converted
using the %s conversion are Unicode objects, the result will also be a
Unicode object.

设若代码里掺杂着str和unicode,这种难题很轻便出现。在同事的代码里,普通话字符串是顾客输入的,经过了准确的编码管理,是以UTF-8编码的str对象;但十分惹祸的unicode对象,固然其内容都是ASCII码,但其来源于是sqlite3数据库查询的结果,而sqlite的API再次来到的字符串都以unicode对象,所以导致了那样奇异的结果。

最后自个儿测验用format格式字符串的方式不会冒出上述极度!

代码如下 复制代码
>>> print ‘Say this:{0} and say that:{1}’.format(a,u’hello
world’)
Say this:你好世界 and say that:hello world

接下去大家商讨下format的中坚用法。

代码如下 复制代码
>>> ‘{0}, {1}, {2}’.format(‘a’, ‘b’, ‘c’)
‘a, b, c’
>>> ‘{2}, {1}, {0}’.format(‘a’, ‘b’, ‘c’)
‘c, b, a’
>>> ‘{2}, {1}, {0}’.format(*’abc’) # unpacking argument
sequence
‘c, b, a’
>>> ‘{0}{1}{0}’.format(‘abra’, ‘cad’) # arguments’ indices can
be repeated
‘abracadabra’
>>> ‘Coordinates: {latitude},
{longitude}’.format(latitude=’37.24N’, longitude=’-115.81W’)
‘Coordinates: 37.24N, -115.81W’
>>> coord = {‘latitude’: ‘37.24N’, ‘longitude’: ‘-115.81W’}
>>> ‘Coordinates: {latitude}, {longitude}’.format(**coord)
‘Coordinates: 37.24N, -115.81W’
>>> coord = (3, 5)
>>> ‘X: {0[0]}; Y: {0[1]}’.format(coord)
‘X: 3; Y: 5’

地方是在2.x下的亲自去做,在3.x中format方法还应该有更有力的功力

象C 中的sprintf函数一样,可以用“%”来格式化字符串。
from:

字符串格式化:

           字符串操作

富有专门的学业的行列操作(索引、分片、乘法、剖断成员身价、求长度、取最小值和最大值)对字符串一样适用;

  1、使用单引号(‘)

对于python的字符串格式化

在python中也是有周边于c中的printf()的格式输出标识。在python中格式化输出字符串使用的是%运算符,通用的款式为
格式标志字符串 % 要出口的值组
中间,侧边部分的”格式标志字符串“可以完全和c中的一致。侧边的’值组’借使有五个及以上的值则须求用小括号括起来,中间用短号隔离。重视来看左边的一对。左侧部分的最轻巧易行款式为:
%cdoe
里头的code有多样,然而由于在python中,全数东西都能够转变来string类型,因而,若无何出格必要完全能够全方位运用’%s‘来标识。比方:
‘%s %s %s’ % (1, 2.3, [‘one’, ‘two’, ‘three’])
它的输出为’1 2.3 [‘one’, ‘two’,
‘three’]’,就是依照%左边的号子输出的。尽管第叁个和第二值不是string类型,同样寻常。在那几个进程中,当Computer开采第二个值不是%s时,会先调用整型数的函数,把首个值也便是1转成string类型,然后再调用str()函数来输出。前边说过还应该有三个repr()函数,假设要用那么些函数,能够用%r来标识。除了%s外,还应该有十分的多类似的code:
整型数:%d
无符号整型数:%u
八进制:%o
十六进制:%x   %X
浮点数:%f
科学记数法: %e   %E
基于数值的两样机关选取%e或%f: %g
依赖数值的例外自动选用%E或%f: %G
就前边边说用\拓宽转义同样,这里用%作为格式标志的标记,也许有八个%本身应当怎么输出的标题。借使要在”格式标识字符串“中输出%自个儿,能够用%%来代表。
上面说的只是格式标识的最简间的花样,来看复杂一点的:
‘%6.2f’ % 1.235
在这种方式中,在f的面前出现了三个近似小数的6.2它表示的情趣是,总共输出的尺寸为6个字符,当中型迷你数2位。还应该有更复杂的:
‘%06.2f’ % 1.235
在6的前方多了贰个0,表示只要出口的位数不足6位就用0补足6位。这一行的输出为‘001.24’,能够看到小数也并吞壹人。类似于这里0这样的标识还会有-、+。其中,-表示左对齐,+表示在正数前边也标上+号,默许是不加的。最终来看最复杂的花样:
‘%(name)s:%(score)06.1f’ %{‘score’:9.5, ‘name’:’newsim’}
这种格局只用在要出口的剧情为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于前面包车型客车键值对中的键。前边的事例能够看来,”格式标志字符串“中标志的顺序和”要出口的值组”中的值是各样对应的,有种种,一对一,二对二。而在这种样式中,则不是,各类格式标志对应哪个值由小括号中的键来钦赐。那行代码的输出为:’newsim:0009.5’。
 
不经常在%6.2f这种方式中,6和2也不可能事先钦命,会在程序运营进度中再发生,那怎么输入呢,当然无法用%%d.%df或%d.%d%f。能够用%*.*f的花样,当然在背后的”要出口的值组“中包涵那八个*的值。比如:’%*.*f’
% (6, 2, 2.345)就相当于’%6.2f’ % 2.345。
那是那本书到此停止看起来最复杂的内容。可是倘若记不住,或……余下全文>>
 

format = “hello %s, %s enough for ya?”
values = (‘world’,’hot’)
print format % values
结果:hello world, hot enough for ya?

  字符串在别的一门语言都是七个要害,灵活运用可实现各个强大的效果与利益,在python中,字符串也是这么,规范的系列操作对字符串也利用,不过分片赋值不行,因为字符串是不可变的。

字符串都是不可变的

    例如:

python 字符串格式化难点

%.3f 中, % 指导后面包车型大巴标志,表示用来格式化字符串前边 %
之后的变量形成字符串。
.3 表示小数点前面保留三人。f
表示将后边要格式化的变量作为浮点数来格式化。
format % pi 中的 % 表示遵照 format 里面包车型地铁 %.3f 的渴求,将 pi
转化为字符串替换掉 format 中的 %.3f。
 

在python中格式化输出字符串使用的是%运算符,通用的款式为 格式标识字符串 %
要出口的值组…

注:假若不是在命令行实施,把print前边的用括号括起来

  字符串的格式化:

为此,类似一下的分片赋值是不合规的:

print 'hello world'

与php类似但函数或艺术名区别样的地点:

  字符串格式化使用字符串格式化操作符%来促成,在%左方停放多少个字符串,侧面放置希望格式化的值。看上边那一个轻易的事例:

[python]  

  2、使用双引号(“)

explode/”
target=”_blank”>php explode=> python split
php trim => python strip
php implode => python join

>>> format="Hello,%s,I'm studying %s!">>> values=('world','Python')>>> print format % valuesHello,world,I'm studying Python!

website = ”  

    例如:

1、去空格及特殊符号

  注意:假诺运用列表大概另外列表取代元组,那么系列就能被分解为三个值,独有元组和字典和格式化四个之上的值。

website[-3:] = ‘com’  

print "hello world"

 :s.strip().lstrip().rstrip(‘,’)

%s标识了特殊供给插入转变值的职位,s表示会被转载为字符串,假使不是字符串,则会用str将其转移为字符串。另外,假若必要在格式化字符串里饱含百分号,则必得使用%%。

 

  3、使用三引号(”’或”””), 三引号能够包蕴多行字串,
并签中间能够随意使用单引号或双引号。

2、复制字符串

  借使急需格式化实数,用f表明符类型,同临时间提供精度;贰个办事处再增加希望保留的小数位数。因为格式化表明符总是以表示项指标字符截止,所以精度应该放在类型字符前面:

字符串格式化

    例如:

 :#strcpy(sStr1,sStr2)
sStr1 = ‘strcpy’
sStr2 = sStr1
sStr1 = ‘strcpy2’
print sStr2

>>> format="PI with three decimals :%.3f">>> from math import pi>>> print format % piPI with three decimals :3.142

字符串格式化适用字符串格式化操作符即百分号%来贯彻。

print '''hello world, "this's is
hello word."
可以是多行'''

print """hello world, "this's is
hello word."
可以是多行"""

3、连接字符串

  格式化操作符的右操作数能够是别的交事务物,假若是元组只怕映射类型,则字符串的格式化略有分歧。例如,倘若右操作数是元组,则当中每三个I成分都会被单独格式化,每种值都亟待贰个一点青眼的转移表达符。(注意:要是须求退换的元组作为转变表示的一片段存在,那么必需将它用圆括号括起来)

在%的右边停放一个字符串(格式化字符串),而左手则停放希望格式化的值。

二、转义字符的行使

 :#strcat(sStr1,sStr2)
sStr1 = ‘strcat’
sStr2 = ‘append’
sStr1 += sStr2
print sStr1

>>> '%s plus %s equals %s ' %(1,1,2)'1 plus 1 equals 2 '

[python]  

  尽管想在单引号里使用单引号,
或是双引号里应用双引号,那么能够透过转义字符来达成, \’代表单引号, \”代表双引号,\\意味着反斜杠, 在行末使用\代表续行,
即下一行与\所在的作为同一个字符串.

4、查找字符

  当然,字符串格式化还应该有众多,举例填充和字宽和精度等,这几个带用到时再去查也不迟,下边是二个有关字符串格式化一个较综合的事例,包含字宽和对齐等:

format = ‘Hello,%s,%s enough for ya?’  

  例如:

 :#strchr(sStr1,sStr2)
# < 0 为未找到
sStr1 = ‘strchr’
sStr2 = ‘s’
nPos = sStr1.index(sStr2)
print nPos

width=input('Please input width:')price_width=10item_width=width-price_widthheader_format='%-*s%*s'format ='%-*s%*.2f'print '=' * widthprint header_format % (item_width,'Item',price_width ,'Price')print '-' * widthprint format % (item_width ,'Apples',price_width ,0.4)print format % (item_width ,'Pears',price_width ,0.5)print format % (item_width ,'Cantaloupes',price_width ,1.92)print format % (item_width ,'Dried Apricots',price_width ,8)print format % (item_width ,'Prunes',price_width ,12)print '=' * widthraw_input("enter any key to exit~~")

values = (‘world’,’Hot’)  

print 'this\'s hello world'
输出结果是
this's hello world

5、相比较字符串

  运维结果如下:

print (format % values)  

以上代码也能够表示为

 :#strcmp(sStr1,sStr2)
sStr1 = ‘strchr’
sStr2 = ‘strch’
print cmp(sStr1,sStr2)

奥门威尼斯网址 1

输出:Hello,world,Hot enough for ya?

print "this's hello world"

6、扫描字符串是或不是包括钦定的字符

  
字符串方法:

注:%s称为转换表明符(conversion
specifier),s表示值会被格式为字符串-假如不是字符串,则会用str将其转移为字符串

使用\换行的事例

 :#strspn(sStr1,sStr2)
sStr1 = ‘12345678’
sStr2 = ‘456’
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)

  差不离任何一种语言关于字符串的情势都游人如织,可是都完全一样,python中字符串方法的观念和数据结构的观念特别相像。

===============================格式化实数(浮点数),使用f表达符类型

print "hello world, \
this's same line with hello world"
输出结果为:
hello world, this's same line with hello world

7、字符串长度

  find——在二个较长的字符串查找子字符串,重返所在地方的最左端索引,上面是常用的用法:

提供所须要的精度:

三、自然字符串

 :#strlen(sStr1)
sStr1 = ‘strlen’
print len(sStr1)

>>> "hello,python,I like python".find #返回的是第一个‘python’的索引6>>> title="hahha,hekko,hello" >>> title.find   #找不到时返回-1-1>>> subject='$$$ Get rich now !!!$$$'>>> subject.find    #默认返回最左边所在的位置0>>> subject.find    #指定起始搜索位置20>>> subject.find('$$$',0,10)   #指定搜索的上下限,注意包含上线不包含下线0

叁个句点再增加希望保留的小数位数。因为格式化表明符总是以象征项目标字符结束,所以精度应该放在类型字符前面:

  使用r或CRUISER标志前面包车型客车字符串中不利用转义字符, 常用张成功则表达式.

8、将字符串中的大小写转变

  
join——用来在队列中添日币素,是split方法的逆方法,很常用,上面几例是广大用法:

[python]  

例如:

 :S.lower() #小写
S.upper() #大写
S.swapcase() #高低写调换
S.capitalize() #首字母大写
String.capwords(S)
#那是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母形成大写,最终用join()合併到一块
#实例:
#strlwr(sStr1)
sStr1 = ‘JCstrlwr’
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1

>>> digitals=[1,2,3,4,5]>>> seperaor='+'>>> seperaor.join #连接数字列表出现错误Traceback (most recent call last):  File "<pyshell#9>", line 1, in <module>    seperaor.joinTypeError: sequence item 0: expected string, int found>>> digitals=['1','2','3','4','5']  #改为字符串>>> seperaor='+'>>> seperaor.join  #连接字符串列表是正确的'1+2+3+4+5'>>> dir='','usr','bin','env'>>> '/'.join  #Linux下目录的格式'/usr/bin/env'>>> print 'C:'+'\\'.join    #windows下目录格式,注意反斜杠需要转义C:\usr\bin\env

format = ‘Pi with three decimals:%.3f’  

print r"\n想输出反斜杠后边跟一个n"
输出结果为:
\n

9、追加钦定长度的字符串

  lower——再次回到字符串的小写字母。为了程序的投机不时候需求“忽略”顾客输入的轻重写,在程序中应使用统一的格式来分辨,上面举出常见用法:(upper是相仿的用法)

from math import pi  

四、Unicode字符串

 :#strncat(sStr1,sStr2,n)
sStr1 = ‘12345’
sStr2 = ‘abcdef’
n = 3
sStr1 += sStr2[0:n]
print sStr1

>>> 'Trouble Is a Friend!'.lower()'trouble is a friend!'>>> if 'Jzhou' in ['jason','james','jzhou']:  #未转换时没有匹配print 'Found it!'>>> name='Jzhou'>>> names=['jason','james','jzhou']>>> if name.lower() in names:   #将转换为小写进行匹配print 'Found it!'Found it!>>> 

print (format % pi)  

  使用u或U标记前边的字符串使用Unicode编码

10、字符串钦点长度比较

   title方法和string模块的capwords函数能够将一句话的首字母大写,符合标题习于旧贯(对冠词的拍卖不太合理)

输出:Pi with three decimals:3.142

五、字符串连接

 :#strncmp(sStr1,sStr2,n)
sStr1 = ‘12345’
sStr2 = ‘123bc’
n = 3
print cmp(sStr1[0:n],sStr2[0:n])

>>> 'i like python'.title ()'I Like Python'>>> import string>>> string.capwords ("i like python!")'I Like Python!'>>> 

==============================模板字符串

  将几个字符串放到一同, 将电动一连, 字符串之间能够有空格.

11、复制钦定长度的字符

  
replace——再次回到字符串的持有相称项均被替换之后收获的字符串

string模块提供另外一种格式化值的秘籍:模板字符串。它的专门的学问议程周边于广大UNIX
SHELL里的变量替换。

  例如:

 :#strncpy(sStr1,sStr2,n)
sStr1 = ”
sStr2 = ‘12345’
n = 3
sStr1 = sStr2[0:n]
print sStr1

>>> 'this is a test'.replace('test','work')'this is a work'   #查找并替换

如:substitute那一个模板方法会用传递步入的基本点字参数foo替换字符串中的$foo

print 'hello''world'
输出结果是: helloworld

12、将字符串前n个字符替换为钦赐的字符

  split——将字符串分割成系列,是join的逆方法,很常用

[python]  

六、注意事项和提议

 :#strnset(sStr1,ch,n)
sStr1 = ‘12345’
ch = ‘r’
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1

>>> '1+2+3+4+5'.split['1', '2', '3', '4', '5']>>> '/usr/bin/env'.split['', 'usr', 'bin', 'env']>>> 'Using the default'.split ()  #如果不提供任何分隔符,默认会把所有空格(包括空格、制表符、换行符等)作为分隔符['Using', 'the', 'default']

from string import Template  

1 单引号和双引号没有任何区别
2 当使用正则表达式时, 建议使用自然字串, 即用r或R后边跟一个字符串
3 当有单引号和双引号混用的情况时, 建议使用三引号

13、扫描字符串

  strip(lstrip,rstrip)——再次回到出去两边空格的字符串,类似C#中的trim函数(ltrim,rtrim)

s = Template(‘$x,glorious $x!’)  

 

 :#strpbrk(sStr1,sStr2)
sStr1 = ‘cekjgdklab’
sStr2 = ‘gka’
nPos = -1
for c in sStr1:
    if c in sStr2:
        nPos = sStr1.index(c)
        break
print nPos

>>> '      internal whtiespace is kept    '.strip ()'internal whtiespace is kept'   #默认取出前后的空格>>> names=['jason','james','jzhou']>>> name='  jzhou'  #前面有2个空格>>> if name in names : print 'Found it!'  #不匹配>>> if name.strip() in names : print 'Found it!'  #取出空格后匹配Found it!>>> '****!!SPAM** for ** everyone!!*******'.strip  #指定要去除的字符'SPAM** for ** everyone'>>> 

s.substitute(x=’slurm’)  

14、翻转字符串

   translate——和replace方法同样,可以轮换字符串中的有些部分,可是和replace区别,它只管理单个字符,但还要可开展多少个替换,有的时候功用比replace高。

输出:slurm,glorious slurm!

 :#strrev(sStr1)
sStr1 = ‘abcdefg’
sStr1 = sStr1[::-1]
print sStr1

  使用translate转变此前,要求先产生一张转变表,调换表中是以某字符的应和关系,这么些表有多达2伍十七个品种,能够动用string模块里的maketrans函数得到。

=============================替换字段的首先有些用{}

15、查找字符串

  maketrans函数有八个参数:八个等长的字符串,表示第三个字符串中的各样字符都用第贰个字符串中一律地点的字符替换,如下例子:

[python]  

 :#strstr(sStr1,sStr2)
sStr1 = ‘abcdefg’
sStr2 = ‘cde’
print sStr1.find(sStr2)

>>> from string import maketrans>>> table=maketrans('cs','kz') #就是把table中的字符c换成k,字符s换成z>>> len256>>> table[97:123]   #提取处理后的小写字母部分,字符c和s已经被替换了'abkdefghijklmnopqrztuvwxyz'>>> maketrans [97:123]  #这是空转换的消息字母部分'abcdefghijklmnopqrstuvwxyz'>>> 

s = Template(“It`s ${x}tastic”)  

16、分割字符串

  成立了这一个table之后,能够将它看作translate方法的参数,进行字符串的转换,如下:

s.substitute(x=’slurm’)  

 :#strtok(sStr1,sStr2)
sStr1 = ‘ab,cde,fgh,ijk’
sStr2 = ‘,’
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
#或者
s = ‘ab,cde,fgh,ijk’
print(s.split(‘,’))

>>> 'this is an incredibele test'.translate'thiz iz an inkredibele tezt'

 

17、连接字符串

  translate的第3个参数是可选的,那么些参数用来钦定要删减的字符,如将一句话中‘fuck’删除:

=============================能够动用$$插入卢比符号

 :delimiter = ‘,’
mylist = [‘Brazil’, ‘Russia’, ‘India’, ‘China’]
print delimiter.join(mylist)
18、PHP 中 addslashes 的实现
 :def addslashes(s):
    d = {‘”‘:’\\”‘, “‘”:”\\'”, “\0″:”\\\0”, “\\”:”\\\\”}
    return ”.join(d.get(c, c) for c in s)

>>> 'Hen,fuck is not a good word'.translate(table,'fuck')'Hen, iz not a good word'>>> 'Hen,fuck is not a good word'.translate(table,' ')#将空格都删除'Hen,fukkiznotagoodword'

[python] 

s = “John ‘Johny’ Doe (a.k.a. \”Super Joe\”)\\\0″
print s
print addslashes(s)

  字符串的格局有许多,以上这么些是相比较常用的,能够用到时再去查。

s = Template(“Make $$ selling $!”)  

19、只呈现字母与数字

s.substituts(x=’slurm’)  

 :def OnlyCharNum(s,oth=”):
    s2 = s.lower();
    fomart = ‘abcdefghijklmnopqrstuvwxyz0123456789’
    for c in s2:
        if not c in fomart:
            s = s.replace(c,”);
    return s;

 

print(OnlyStr(“a000 aa-b”))

=============================除了主要字参数外,还足以接纳字典变量提供值/名称对

20、截取字符串

[python]  

 :str = ‘0123456789′
print str[0:3] #截取第壹个人到第二人的字符
print str[:] #截取字符串的全套字符
print str[6:] #截取第多少个字符到结尾
print str[:-3] #截取从头开首到倒数第三个字符从前
print str[2] #截取第八个字符
print str[-1] #截取倒数第三个字符
print str[::-1] #创设贰个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数首位与尾数第壹位以前的字符
print str[-3:] #截取倒数第四人到最后
print str[:-5:-3] #逆序截取,具体啥意思没搞掌握?

s = Template(“A $thing must never $action”)  

21、字符串在出口时的对齐

d = {}  

 :S.ljust(width,[fillchar])
#出口width个字符,S左对齐,不足部分用fillchar填充,默许的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #高级中学档对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足

d[thing]=’gentleman’  

22、字符串中的寻找和替换

d[action]=’show his socks’  

 :S.find(substr, [start,
[end]])
#再次来到S中冒出substr的率先个假名的标记,假如S中从未substr则赶回-1。start和end功能就一定于在S[start:end]中搜索
S.index(substr, [start, [end]])
#与find()一样,只是在S中未有substr时,会回到八个周转时不当
S.rfind(substr, [start, [end]])
#重返S中最后现身的substr的首先个字母的标记,假如S中一直不substr则赶回-1,也正是说从左边算起的第一遍出现的substr的首字母标号
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]]) #计量substr在S中冒出的次数
S.replace(oldstr, newstr, [count])
#把S中的oldstar替换为newstr,count为轮换次数。那是替换的通用情势,还会有一对函数实行特殊字符的交替
S.strip([chars])
#把S中上下chars中某个字符全体去掉,能够清楚为把S前后chars替换为None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])
#把S中的tab字符替换没空格,每种tab替换为tabsize个空格,暗中认可是8个
23、字符串的分割和组成
 :S.split([sep, [maxsplit]])
#以sep为分隔符,把S分成二个list。maxsplit表示分割的次数。私下认可的分割符为空白字符
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])
#把S根据行分割符分为三个list,keepends是三个bool值,假使为真每行后而会保留行分割符。
S.join(seq) #把seq代表的队列──字符串类别,用S连接起来

s.substituts(d)  

24、字符串的mapping,那百分之十效包蕴八个函数

 

 :String.maketrans(from, to)
#归来一个2伍20个字符组成的翻译表,个中from中的字符被一一对应地转变到to,所以from和to必得是等长的。
S.translate(table[,deletechars])
#
使用方面包车型地铁函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。须要专心的是,固然S为unicode字符串,那么就不补助deletechars参数,可以使用把某部字符翻译为None的方法贯彻均等的成效。另外还能利用codecs模块的功效来创立尤其作用壮大的翻译表

25、字符串还应该有一点点编码和解码的函数

字符串格式化转变类型

 :S.encode([encoding,[errors]])
# 其中encoding能够有三种值,举例gb2312 gbk gb18030 bz2 zlib big5
bzse64等都扶助。errors暗中认可值为”strict”,意思是UnicodeError。也许的值还会有’ignore’,
‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’
和富有的通过codecs.register_error注册的值。这一有的内容提到codecs模块,不是特理解
S.decode([encoding,[errors]])

d,i
带符号的十进制整数

26、字符串的测量检验、推断函数,这一类函数在string模块中并未,那么些函数再次回到的都以bool值

o
不带符号的八进制

 :S.startswith(prefix[,start[,end]])
#是否以prefix开头
S.endswith(suffix[,start[,end]])
#以suffix结尾
S.isalnum()
#是否全都是字母和数字,并至少有八个字符
S.isalpha() #是或不是全部都以字母,并至少有三个字符
S.isdigit() #是或不是全都以数字,并至少有三个字符
S.isspace() #是或不是全部是空白字符,并至少有叁个字符
S.islower() #S中的字母是还是不是全部是小写
S.isupper() #S中的字母是还是不是就是大写
S.istitle() #S是不是是首字母大写的

u
不带符号的十进制

27、字符串类型调换函数,那多少个函数只在string模块中有

x
不带符号的十六进制–小写

 :string.atoi(s[,base])
#base默感觉10,若是为0,那么s即可是012或0x23这种形式的字符串,借使是16那么s就不得不是0x23或0X12这种格局的字符串
string.atol(s[,base]) #转成long
string.atof(s[,base]) #转成float

X
不带符号的十六进制–大写

28、Python字符串反转

e
科学计数法表示的浮点数–小写

对于str类型,python并不曾reverse函数。但是,通过反向步进切成块,大家能够高速地反转一串字符串。

E
科学计数法表示的浮点数–大写

s = ‘abcde’ 
s[::-1]

f,F
十进制浮点数

g
借使指数超过-4如故小于精度值则和e相同,其余情况与f同样

G
借使指数超越-4要么小于精度值则和E一样,别的处境与F一样

C 单字符

r
字符串(使用repr调换猖狂Python对象)

s
字符串(使用str调换任性Python对象)

1、轻便转变   www.2cto.com

简单的说的调换只须求写出转换类型,使用起来非常粗大略

[python]  

‘Price of eggs: %d’ %42  

输出:Price of eggs:42

 

2、字段宽度和精度

转移表达符能够满含字段宽度和精度。字段宽度是改动后的值所保留的微乎其微字符数个数,精度则是结果应该包罗的小数位数,大概是改变后的值所能包蕴的最大字符个数。

那七个参数都以整数(首先是字符宽度,然后是精度),通过点号(.) 分隔。

[python]  

‘%10f’ %42 #字段宽度10  

‘%10.2f’ %42 #字段宽度10 精度2  

‘%.2f’ %42 #精度2  

能够动用*作为字段宽度大概精度

[python]  

‘%.*s’ %(5,’Guido van Rossum’)  

输出:’Guido’

全数专门的学问的队列操作(索引、分片、乘法、判定成员身份、求长度、取最小值和最大值)对字符串同样适用;
字符串都以不可…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图