python学习笔记(三)——字符串

小编 2026-06-25 阅读:301 评论:0
                                                ...

                                                      字符串操作

   字符串在任何一门语言都是一个重点,灵活运用可实现各种强大的功能,在python中,字符串也是如此,标准的序列操作对字符串也使用,但是分片赋值不行,因为字符串是不可变的。

  字符串的格式化:

  字符串格式化使用字符串格式化操作符%来实现,在%左侧放置一个字符串,右侧放置希望格式化的值。看下面这个简单的例子:

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

  注意:如果使用列表或者其他列表代替元组,那么序列就会被解释为一个值,只有元组和字典和格式化一个以上的值。

      %s标记了需要插入转换值的位置,s表示会被转化为字符串,如果不是字符串,则会用str将其转换为字符串。另外,如果需要在格式化字符串里包括百分号,则必须使用%%。

  如果需要格式化实数,用f说明符类型,同时提供精度;一个据点再加上希望保存的小数位数。因为格式化说明符总是以表示类型的字符结束,所以精度应该放在类型字符前面:

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

  格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(字典),则字符串的格式化略有不同。例如,如果右操作数是元组,则其中每一个I元素都会被单独格式化,每个值都需要一个对应的转换说明符。(注意:如果需要转换的元组作为转换表示的一部分存在,那么必须将它用圆括号括起来)

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

  当然,字符串格式化还有很多,比如填充和字宽和精度等,这些带用到时再去查也不迟,下面是一个关于字符串格式化一个较综合的例子,包括字宽和对齐等:

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(16 oz.)',price_width ,8)print format % (item_width ,'Prunes(4 lbs.)',price_width ,12)print '=' * widthraw_input("enter any key to exit~~")

  运行结果如下:

python学习笔记(三)——字符串

   字符串方法:

  几乎任何一种语言关于字符串的方法都很多,不过都大同小异,python中字符串方法的思想和数据结构的思想非常相似。

   find——在一个较长的字符串查找子字符串,返回所在位置的最左端索引,下面是常用的用法:

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

   join——用来在队列中添加元素(必须是字符串),是split方法的逆方法,很常用,下面几例是常见用法:

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

  lower——返回字符串的小写字母。为了程序的友好有时候需要“忽略”用户输入的大小写,在程序中应使用统一的格式来识别,下面举出常见用法:(upper是类似的用法)

>>> '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!>>> 

   title方法和string模块的capwords函数可以将一句话的首字母大写,符合标题习惯(对冠词的处理不太合理)

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

   replace——返回字符串的所有匹配项均被替换之后得到的字符串

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

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

>>> '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']

  strip(lstrip,rstrip)——返回出去两侧(不包括内部)空格的字符串,类似C#中的trim函数(ltrim,rtrim)

>>> '      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'>>> 

   translate——和replace方法一样,可以替换字符串中的某些部分,但是和replace不同,它只处理单个字符,但同时可进行多个替换,有时效率比replace高。

  使用translate转换之前,需要先完成一张转换表,转换表中是以某字符的对应关系,这个表有多达256个项目,可以使用string模块里的maketrans函数得到。   

  maketrans函数有两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换,如下例子:

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

  创建了这个table之后,可以将它用作translate方法的参数,进行字符串的转换,如下:

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

  translate的第二个参数是可选的,这个参数用来指定要删除的字符,如将一句话中‘fuck’删除:

>>> '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'

  字符串的方法有很多,以上这些是比较常用的,可以用到时再去查。

 

 

作者:zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

上一篇:FFT:BZOJ4503 两个串 下一篇:链表
热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表