用法

  1. 字符串常量:

    import string

    print(string.ascii_lowercase)
    print(string.ascii_uppercase)
    print(string.ascii_letters)
    print(string.digits)
    print(string.hexdigits)
    print(string.octdigits)
    print(string.punctuation)
    print(string.printable)

结果

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
0123456789abcdefABCDEF
01234567
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

  1. Template类:

其实,Template类,可以和格式化字符串的用法还有字符串对象的format()方法做对比,可以帮助更好地理解。首先,新建一个python文件:string_template.py,
然后在里面写入以下内容:

import stringvalues = {'var': 'foo'}t = string.Template("""
Variable        : $var
Escape          : $$
Variable in text: ${var}iable
""")print('TEMPLATE:', t.substitute(values))s = """
Variable        : %(var)s
Escape          : %%
Variable in text: %(var)siable
"""print('INTERPOLATION:', s % values)s = """
Variable        : {var}
Escape          : {{}}
Variable in text: {var}iable
"""print('FORMAT:', s.format(**values))

然后,在python命令行中输入:

$ python string_template.py

结果

TEMPLATE:
Variable        : foo
Escape          : $
Variable in text: fooiableINTERPOLATION:
Variable        : foo
Escape          : %
Variable in text: fooiableFORMAT:
Variable        : foo
Escape          : {}

可以看到三者之间都可以起到对字符串里进行格式化的效果。只是三者的修饰符不一样。Template类好的一点就是其可以通过继承类,实例化后自定义其修饰符,并且也可以对变量的名字格式进行正则表达式的定义。如string_template_advanced.py示例:

import string
class MyTemplate(string.Template):delimiter = '%'idpattern = '[a-z]+_[a-z]+'template_text = '''Delimiter : %%Replaced  : %with_underscoreIgonred   : %notunderscored
'''d = {'with_underscore': 'replaced','notunderscored': 'not replaced',
}t = MyTemplate(template_text)
print('Modified ID pattern:')
print(t.safe_substitute(d))

首先,解释下上面python文件。里面定义了一个类MyTemplate,继承了string的Template类,然后,对其两个域进行重载: Delimiter为修饰符,现在指定为了‘%’,而不是之前的‘$’。 接着,idpattern是对变量的格式指定。

结果

$ python string_template_advanced.py
Modified ID pattern:Delimiter : %Replaced  : replacedIgonred   : %notunderscored

为什么notunderscored没有被替换呢?原因是我们在类定义的时候,idpattern里指定要出现下划线'_', 而该变量名并没有下划线,故替代不了。

转载于:https://www.cnblogs.com/brad1994/p/6536676.html

Python 模块之 string.py相关推荐

  1. Python模块包中__init__.py文件的作用(转载)

    用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了 模块包: 包通常总是一个目录,目录下为首的一个文 ...

  2. Python基础笔记_Day04_数据类型、math模块、random模块、string模块

    Day04_数据类型.math模块.random模块.string模块 04.01_Python语言基础(Python中的数据类型)(了解) 04.02_Python语言基础(Num数据类型)(掌握) ...

  3. Python模块包中__init__.py文件的作用

    2019独角兽企业重金招聘Python工程师标准>>> 在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自 ...

  4. python模块 init py_Python模块包中__init__.py文件的作用

    在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...

  5. python怎样导出py文件_导出python模块(到字符串或py文件)

    摘要: 我想要一个'module'类型的变量并导出它.在 我使用import从.py文件导入python模块并对其进行更改.我需要将模块导出回一个文件,或者获取完整模块的字符串表示形式,然后将其写入磁 ...

  6. from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)

    文章目录 背景 正文 Ⅰ.报错信息 Ⅱ.问题解决 Ⅲ.问题分析 Ⅳ._init_.py文件作用 背景 最近在使用Pycharm开发python脚本时,遇到这样一个现象:打开别人给的工程,环境配置都没有 ...

  7. python制作安装包_如何制作python安装模块(setup.py)

    Python模块的安装方法: 1. 单文件模块:直接把文件拷贝到$python_dir/lib 2. 多文件模块,带setup.py:python setup.py install 3. egg文件, ...

  8. 【转载】如何制作python安装模块(setup.py)

    2019独角兽企业重金招聘Python工程师标准>>> Python 模块的安装方法: 单文件模块:直接把文件拷贝到 $PYTHON_DIR/lib 多文件模块,且带有 setup. ...

  9. python模块文件的扩展名不一定是py_Python文件扩展名.py?.pyc?.pyd?

    与Python相关的文件扩展名实际不止.py..pyc..pyd这三种,但这三种是最常见的,比如以Houdini 16.5.268的Python模块包路径搜索一下有哪些扩展名 与Python相关的只有 ...

最新文章

  1. 1.字母异位词分组(LeetCode第49题)
  2. BTC震荡调整后的新一轮爆发将要开启,BCH姿态逐渐明显
  3. Delegate成员变量和Event的区别
  4. python代码需要背吗-Python代码需要缩进吗
  5. 4分钟极速甩脂训练!抛开借口!繁忙族必备!
  6. Spring Boot 单元测试二三事
  7. 【机器学习】粗糙集属性约简算法与mRMR算法的本质区别
  8. KEIL 默认 char 是无符号的
  9. java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...
  10. 告别程序员生涯,一点感慨,与诸君共勉(转)
  11. VIM自动格式化C代码
  12. [react] 在react中无状态组件有什么运用场景
  13. ajax之深入解析(2)
  14. 矢量图和Word:EPS,PDF,EMF和SVG
  15. python类型检查_python【数据类型检查】
  16. 泛微e9隐藏明细表_泛微Ecology权限整理大全相当全要点
  17. 如何学习一门新技术(经验分享)
  18. 《Unity 3D人工智能编程》——2.2 子弹类
  19. 安卓软件定做-华为Mate7手机高配版和标准版的区别
  20. 全角和半角的区别及使用方式

热门文章

  1. 51nod 1623 完美消除(数位DP)
  2. if...else..的错误用法
  3. Linux下显示ip所属位置
  4. NEC学习 ---- 模块 - 带点文字链接列表
  5. EBS中Java并发程序笔记(1)
  6. Socket 死连接详解
  7. Java多线程复习_Java多线程复习
  8. 可以ping通 但ssh: connect to host 192.168.0.2 port 22: Connection refused
  9. 计算机没有程序,计算机小知识:想尝试写程序却没有电脑?这个在线编辑器满足你...
  10. debug=true开启自动配置报告