• 玩转字符串(2)
    • 连接字符串的方法2
  • 字符串复制
  • 字符串长度
  • 字符大小写的转换

    玩转字符串(2)

    上一章中已经讲到连接两个字符串的一种方法。复习一下:

    1. >>> a= 'py'
    2. >>> b= 'thon'
    3. >>> a+b
    4. 'python'

    既然这是一种方法,言外之意,还有另外一种方法。

    连接字符串的方法2

    在说方法2之前,先说明一下什么是占位符,此前在讲解变量(参数)的时候,提到了占位符,这里对占位符做一个比较严格的定义:

    来自百度百科的定义:

    顾名思义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号。

    根据这个定义,在python里面规定了一些占位符,通过这些占位符来说明那个位置应该填写什么类型的东西,这里暂且了解两个占位符:%d——表示那个位置是整数,%s——表示那个位置应该是字符串。下面看一个具体实例:

    1. >>> print "one is %d"%1
    2. one is 1

    要求打印(print)的内容中,有一个%d占位符,就是说那个位置应该放一个整数。在第二个%后面,跟着的就是那个位置应该放的东西。这里是一个整数1。我们做下面的操作,就可以更清楚了解了:

    1. >>> a=1
    2. >>> type(a)
    3. <type 'int'> #a是整数
    4. >>> b="1"
    5. >>> type(b)
    6. <type 'str'> #b是字符串
    7. >>> print "one is %d"%a
    8. one is 1
    9. >>> print "one is %d"%b #报错了,这个占位符的位置应该放整数,不应该放字符串。
    10. Traceback (most recent call last):
    11. File "<stdin>", line 1, in <module>
    12. TypeError: %d format: a number is required, not str

    同样道理,%s对应的位置应该放字符串,但是,如果放了整数,也可以。只不过是已经转为字符串对待了。但是不赞成这么做。在将来,如果使用mysql(一种数据库)的时候,会要求都用%s做为占位符,这是后话,听听有这么回事即可。

    1. >>> print "one is %s"%b
    2. one is 1
    3. >>> print "one is %s"%a #字符串是包容的
    4. one is 1

    好了。啰嗦半天,占位符是不是理解了呢?下面我们就用占位符来连接字符串。是不是很有意思?

    1. >>> a = "py"
    2. >>> b = "thon"
    3. >>> print "%s%s"%(a,b) #注
    4. python

    注:仔细观察,如果两个占位符,要向这两个位置放东西,代表的东西要写在一个圆括号内,并且中间用逗号(半角)隔开。

    字符串复制

    有一个变量,连接某个字符串,也想让另外一个变量,也连接这个字符串。一种方法是把字符串再写一边,这种方法有点笨拙,对于短的到无所谓了。但是长的就麻烦了。这里有一种字符串复制的方法:

    1. >>> a = "My name is LaoQi. I like python and can teach you to learn it."
    2. >>> print a
    3. My name is LaoQi. I like python and can teach you to learn it.
    4. >>> b = a
    5. >>> print b
    6. My name is LaoQi. I like python and can teach you to learn it.
    7. >>> print a
    8. My name is LaoQi. I like python and can teach you to learn it.

    复制非常简单,类似与赋值一样。可以理解为那个字符串本来跟a连接着,通过b=a,a从自己手里分处一股绳子给了b,这样两者都可以指向那个字符串了。

    字符串长度

    要向知道一个字符串有多少个字符,一种方法是从头开始,盯着屏幕数一数。哦,这不是计算机在干活,是键客在干活。键客,不是剑客。剑客是以剑为武器的侠客;而键客是以键盘为武器的侠客。当然,还有贱客,那是贱人的最高境界,贱到大侠的程度,比如岳不群之流。

    键客这样来数字符串长度:

    1. >>> a="hello"
    2. >>> len(a)
    3. 5

    使用的是一个函数len(object)。得到的结果就是该字符串长度。

    1. >>> m = len(a) #把结果返回后赋值给一个变量
    2. >>> m
    3. 5
    4. >>> type(m) #这个返回值(变量)是一个整数型
    5. <type 'int'>

    字符大小写的转换

    对于英文,有时候要用到大小写转换。最有名驼峰命名,里面就有一些大写和小写的参合。如果有兴趣,可以来这里看自动将字符串转化为驼峰命名形式的方法。

    在python中有下面一堆内建函数,用来实现各种类型的大小写转化

    • S.upper() #S中的字母大写
    • S.lower() #S中的字母小写
    • S.capitalize() #首字母大写
    • S.istitle() #单词首字母是否大写的,且其它为小写,网友白羽毛指出,这里表述不准确。非常感谢他。为了让看官对这些大小写问题有更深刻理解,我从新写下面的例子,请看官审查。再次感谢白羽毛。
    • S.isupper() #S中的字母是否全是大写
    • S.islower() #S中的字母是否全是小写

    看例子:

    1. >>> a = "qiwsir,python"
    2. >>> a.upper() #将小写字母完全变成大写字母
    3. 'QIWSIR,PYTHON'
    4. >>> a #原数据对象并没有改变
    5. 'qiwsir,python'
    6. >>> b = a.upper()
    7. >>> b
    8. 'QIWSIR,PYTHON'
    9. >>> c = b.lower() #将所有的小写字母变成大写字母
    10. >>> c
    11. 'qiwsir,python'
    12. >>> a
    13. 'qiwsir,python'
    14. >>> a.capitalize() #把字符串的第一个字母变成大写
    15. 'Qiwsir,python'
    16. >>> a #原数据对象没有改变
    17. 'qiwsir,python'
    18. >>> b = a.capitalize() #新建立了一个
    19. >>> b
    20. 'Qiwsir,python'
    21. >>> a = "qiwsir,github" #这里的问题就是网友白羽毛指出的,非常感谢他。
    22. >>> a.istitle()
    23. False
    24. >>> a = "QIWSIR" #当全是大写的时候,返回False
    25. >>> a.istitle()
    26. False
    27. >>> a = "qIWSIR"
    28. >>> a.istitle()
    29. False
    30. >>> a = "Qiwsir,github" #如果这样,也返回False
    31. >>> a.istitle()
    32. False
    33. >>> a = "Qiwsir" #这样是True
    34. >>> a.istitle()
    35. True
    36. >>> a = 'Qiwsir,Github' #这样也是True
    37. >>> a.istitle()
    38. True
    39. >>> a = "Qiwsir"
    40. >>> a.isupper()
    41. False
    42. >>> a.upper().isupper()
    43. True
    44. >>> a.islower()
    45. False
    46. >>> a.lower().islower()
    47. True

    顺着白羽毛网友指出的,再探究一下,可以这么做:

    1. >>> a = "This is a Book"
    2. >>> a.istitle()
    3. False
    4. >>> b = a.title() #这样就把所有单词的第一个字母转化为大写
    5. >>> b
    6. 'This Is A Book'
    7. >>> a.istitle() #判断每个单词的第一个字母是否为大写
    8. False

    字符串问题,看来本讲还不能结束。下一讲继续。有看官可能要问了,上面这些在实战中怎么用?我正想为你的,请键客设计一种实战情景,能不能用上所学。


    首页   |   上一讲   |   下一讲