• Python 从入门到放弃(二)


    Python 从入门到放弃(二)

    2011/12/06 Wed 09:51

    字符串

    字符串都是不可变的,分片赋值不合法:

    mystr = 'cogito, ergo sum'
    mystr[1:5] = 'abcd'
    Traceback (most recent call last):
      File "<ipython-input-5-d83c7aa5ecd5>", line 1, in <module>
        mystr[1:5] = 'abcd'
    TypeError: 'str' object does not support item assignment
    

    字符串格式化方法:百分号(%)实现,多个时用tuple实现,如:

    format = 'sakura when i see it hit the %s my %s gets weak'
    format
    Out[7]: 'sakura when i see it hit the %s my %s gets weak'
    values = ('ground','heart')
    values
    Out[9]: ('ground', 'heart')
    format % values
    Out[10]: 'sakura when i see it hit the ground my heart gets weak'
    

    在python中只有tuple和dict可以格式化多个值,而list等序列会被解释为一个值。
    可以在格式化时提供精度和格式,如下:

    format = 'print a number in format: %10.3f' % 3.14159265
    format
    Out[12]: 'print a number in format:      3.142'
    format = 'print a number in format: %-10.3f' % 3.14159265
    format
    Out[14]: 'print a number in format: 3.142     '
    format = 'print a number in format: %+10.3f' % 3.14159265
    format
    Out[16]: 'print a number in format:     +3.142'
    format = 'print a number in format: %010.3f' % 3.14159265
    format
    Out[18]: 'print a number in format: 000003.142'
    

    10.3f 中 f 为类型,10为最小宽度,3为小鼠精度,- 表示左对齐,+ 表示显示正负号,0 表示如不够宽度则用0补全,不表示八进制。
    ps:python中0和0x表示八进制数和十六进制数,如

    010
    Out[2]: 8
    0x10
    Out[3]: 16
    

    字符串转换类型除了 f 还有

    d :signed int (dec)
    o :unsigned (oct)
    u :unsigned dec
    x / X : unsigned hex
    e / E :科学计数法
    s : 用str转换任意python对象
    r : 用repr转任意python对象

    如果用×作为宽度或者精度,则从tuple参数中读取,如:

    format = 'print a number in format: %*.3f' % (15,3.14159265)
    format
    Out[22]: 'print a number in format:           3.142'
    format = 'print a number in format: %*.*f' % (15,5,3.14159265)
    format
    Out[24]: 'print a number in format:         3.14159'
    format = 'print a number in format: %10.*f' % (5,3.14159265)
    format
    Out[26]: 'print a number in format:    3.14159'
    

    字符串方法:

    1. find : 查找子串,返回左索引,找不到返回 -1 ,后面的参数指定起止点,左闭右开。注意,返回零表示在开头找到,不是boolean。

      mystr
      Out[27]: 'cogito, ergo sum'
      mystr.find('co')
      Out[28]: 0
      mystr.find('er')
      Out[29]: 8
      mystr.find('er',1,5)
      Out[30]: -1
      
    2. join :用某符号连接,是split的逆过程。

      dirs = ['.','mycode','cnn','denoise']
      dirs
      Out[32]: ['.', 'mycode', 'cnn', 'denoise']
      '/'.join(dirs)
      Out[33]: './mycode/cnn/denoise' 
      
    3. lower :返回小写。

    4. replace :替换,后项参数替换掉前面的参数。

    5. split :分割,如果没有分割符号,则用所有空格,制表,回车分割。

      mydir
      Out[35]: './mycode/cnn/denoise'
      mydir.split('/')
      Out[36]: ['.', 'mycode', 'cnn', 'denoise']
      
    6. translate :把ASCII 字符集中的某些值替换成另一值,相当于重新生成了一个表之间的映射,maketrans 生成的 table 即为一个新的 ASCII 表。

      from string import maketrans
      table = maketrans('aeiou','mnbpt')
      'das ist ein auto'.translate(table)
      Out[39]: 'dms bst nbn mttp'
      

    以上整理字符串相关的常用内容。

    THE END

    reference:
    1. 《Python基础教程》([挪] Magnus Lie Hetland 著)

  • 相关阅读:
    一个拖延症晚期患者的锦囊妙计
    阔别三十天后每天一博客卷土重来——互联网时代的个体户(上)
    阔别三十天后每天一博客卷土重来——互动交流新思路(下)
    阔别三十天后每天一博客卷土重来——互动交流新思路(中)
    阔别三十天后每天一博客卷土重来——互动交流新思路(上)
    渣渣小本求职复习之路每天一博客系列——想想大学里最后半年该怎么过(最终篇)
    渣渣小本求职复习之路每天一博客系列——回顾走过的四个礼拜
    渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
    渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(4)
    渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(3)
  • 原文地址:https://www.cnblogs.com/morikokyuro/p/13256864.html
Copyright © 2020-2023  润新知