• (转)Python 标准库笔记:string模块


    String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。

     原文:http://www.10tiao.com/html/384/201709/2651305041/1.html

    1. 常用方法

    2.字符串常量

    3.字符串模板Template

    通过string.Template可以为Python定制字符串的替换标准,下面是具体列子:

    >>>from string import Template

    >>>s = Template('$who like $what')

    >>>print s.substitute(who='i', what='python')

    i like python

    >>>print s.safe_substitute(who='i') # 缺少key时不会抛错

    i like $what

    >>>Template('${who}LikePython').substitute(who='I') # 在字符串内时使用{}

    'ILikePython'

    Template还有更加高级的用法,可以通过继承string.Template, 重写变量delimiter(定界符)和idpattern(替换格式), 定制不同形式的模板。

    import string

    template_text = ''' Delimiter : $de Replaced : %with_underscore Ingored : %notunderscored '''

    d = {'de': 'not replaced',

         'with_underscore': 'replaced',

         'notunderscored': 'not replaced'}

    class MyTemplate(string.Template):

        # 重写模板 定界符(delimiter)为"%", 替换模式(idpattern)必须包含下划线(_)

        delimiter = '%'

        idpattern = '[a-z]+_[a-z]+'

    print string.Template(template_text).safe_substitute(d)  # 采用原来的Template渲染

    print MyTemplate(template_text).safe_substitute(d)  # 使用重写后的MyTemplate渲染

    输出:

    Delimiter : not replaced

        Replaced : %with_underscore

        Ingored : %notunderscored

        Delimiter : $de

        Replaced : replaced

        Ingored : %notunderscored

    原生的Template只会渲染界定符为$的情况,重写后的MyTemplate会渲染界定符为%且替换格式带有下划线的情况。

    4.常用字符串技巧

    • 1.反转字符串

    >>> s = '1234567890'

    >>> print s[::-1]

    0987654321

    • 2.关于字符串链接

    尽量使用join()链接字符串,因为’+’号连接n个字符串需要申请n-1次内存,使用join()需要申请1次内存。

    • 3.固定长度分割字符串

    >>> import re

    >>> s = '1234567890'

    >>> re.findall(r'.{1,3}', s)  # 已三个长度分割字符串

    ['123', '456', '789', '0']

    • 4.使用()括号生成字符串

    sql = ('SELECT count() FROM table '

           'WHERE id = "10" '

           'GROUP BY sex')

    print sql

    SELECT count() FROM table WHERE id = "10" GROUP BY sex

    • 5.将print的字符串写到文件

    >>> print >> open("somefile.txt", "w+"), "Hello World"  # Hello World将写入文件somefile.txt

  • 相关阅读:
    财务自由之路--笔记
    Spring Cloud微服务笔记(一)微服务与云概念
    Java8新特性----Stream
    Docker操作笔记(四)使用网络
    Docker操作笔记(三)数据管理
    Docker操作笔记(二)容器
    Docker操作笔记(一)使用镜像
    信息化领域热词分类分析及解释
    假期第二周总结
    假期第一周总结
  • 原文地址:https://www.cnblogs.com/liujiacai/p/7812972.html
Copyright © 2020-2023  润新知