免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1917 | 回复: 0
打印 上一主题 下一主题

python(4): string的操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-22 15:27 |只看该作者 |倒序浏览

                对于一个字符串,最基本的操作就是连接、截取。在python中,’+‘是字符串连接符,截取则要用到python一个强大功能slice,也就所谓的切片,很形象。在’+‘连接字符串的时候,需要注意一点,“+”不能用来连接一个字符串和一个数字,因为“+”也同时是数字在加法运算符,如果你写出4+'times',那么电脑是应该把4变成字符串呢,还是应该把’times‘变成数字呢?这就成问题了,所以这是不允许的。同时就跟乘法是加法的一种形式一样,字符串也可以用”*“来做多重连接的运算。
切片有多种形式,各有各的用处:
  • str[0:5]
  • str[:]
  • str[4:]
  • str[:-3]
  • str[2]
  • str[1:9:2]
                   
                   
                    第一种形式其实就是切片的基本形式,截取第一位到第四位的字符。注意:在切片中,不包括后一个数字代表的字符。剩下的都是切片的最种形式,第二种表示“截取”这个字符串的全部字符,可以这样理解,":"前的“空”代表字符串开头,“:”后的”空“代表字符串的尾。这样的话第三种的意思是从第五个字符到结尾。这里需要注意的是片的标号是左边从0开始算的,右边从-1开始算的,为什么右为不也从零开始呢?因为数学上没有”-0“的概念,只要这样将就了。第四种表示从头开始到倒数第三个字符之前,不包括倒数第三个字符。第五种表示,截取一个字符就是第三个字符,标号为2。最特殊的就是第六种,这是一种新加的功能,它的标号有三个,前两个很清楚是什么意思,最后一个表示步长。意思是取出字符串的第二到第8位,以2的步长取出字符。比如str='0123456789',str[1:9:2]的结果是’1357‘,str[1:9:-1]的结果是'87654321'。这也是一个技巧可以用str[::-1]创造一个与原字符串顺序相反的字符串。
    前面说到,是不允许用”+“连接字符串和数字的,如果有这种需求,也不是没有办法,就是要给电脑明确要把数字转成字符串,还是要把字符串转成数字。
    • 字符串转成数字:   int()
    • 数字转成字符串:    str()
    • 字符串转成浮点数: float()
    其实,前面也说过int()和str()函数,int()函数把参数转成十进制的整数,str()把参数转成ASCII编码的字符串。
    对于字符串还有一个比较特殊的运算:in,可以用来判断一个字符串是否包含在另一个串中。也可结合for循环,用来遍历字符串的第一个字各个符。比如:
  • str='hello world'
  • if 'el' in str:
  •     print 'yes'
  • else:
  •     print 'no'
  • for char in str:
  •     print char,这个小程序会输出,’yes'和‘hello world'。第2行用于判断字符串是否在str中,结果显然是ture,所以输出'yes'。第六行中char是一个变量名,意思是遍历str的每个字符,并且每次循环都把一个字符赋给变量char并输出。第7行的最后‘,’要注意,print在输出时,会在每次输出后加上‘\n’,如果这样的话,输出的'hello world'就会是坚着的,加上’,‘可以避免出现这种情况。
    重要提示,’‘字符在string类型中好像很特殊。比如一个字符串为L=“test”。 那么:
    L.count('') ===> 5
    '' in L ===> True
    L.index('') ===> 0
    L.find('') ===> 0
    只能理解为字符串L实际上是 ''+'t'+''+'e'+''+'s'+''+'t'+''。这样的话第一个''可以用L[0,0],第二个''可以用L[1:1]...表示
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/2809/showart_77311.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP