py遍历字符串的每个字符_python3从零学习-5.1.2、字符串模块string

5016986cd2255a754afbc301b4aea406.png
  • string.py模块

字符串模块string包含字符串常量和两个模板类Formatter和Template,最常用还是文本序列str

1、字符串常量:

string.ascii_letters
下文所述 ascii_lowercase 和 ascii_uppercase 常量的拼连。 该值不依赖于语言区域,不会发生改变。 string.ascii_lowercase
小写字母 'abcdefghijklmnopqrstuvwxyz'。 该值不依赖于语言区域,不会发生改变。 string.ascii_uppercase
大写字母 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'。 该值不依赖于语言区域,不会发生改变。 string.digits
字符串 '0123456789’。十进制。 string.hexdigits
字符串 '0123456789abcdefABCDEF’。十六进制。 string.octdigits
字符串 '01234567’。八进制。 string.punctuation
字符串 ‘!"#$%&'()*+,-./:;<=>?@[]^_`{|}~’,由在 C 语言区域中被视为标点符号的 ASCII 字符组成的字符串。 string.printable
由被视为可打印符号的 ASCII 字符组成的字符串。 这是 digits, ascii_letters, punctuation 和 whitespace 的总和。 string.whitespace
由被视为空白符号的 ASCII 字符组成的字符串。 其中包括空格、制表、换行、回车、进纸和纵向制表符。

示例:

import string 


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

输出:

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



























2、Formatter类

class string.Formatter
    Formatter 类包含下列公有方法:


    format(format_string, /, *args, **kwargs)
        首要的 API 方法。 它接受一个格式字符串和任意一组位置和关键字参数。 它只是一个调用 vformat() 的包装器。
        在 3.7 版更改: 格式字符串参数现在是 仅限位置参数。


    vformat(format_string, args, kwargs)
        此函数执行实际的格式化操作。 
        它被公开为一个单独的函数,用于需要传入一个预定义字母作为参数,而不是使用 *args 和 **kwargs 语法将字典解包为多个单独参数并重打包的情况。 
        vformat() 完成将格式字符串分解为字符数据和替换字段的工作。 它会调用下文所述的几种不同方法。
        此外,Formatter 还定义了一些旨在被子类替换的方法:


    parse(format_string)
        循环遍历 format_string 并返回一个由可迭代对象组成的元组 (literal_text, field_name, format_spec, conversion)。 
        它会被 vformat() 用来将字符串分解为文本字面值或替换字段。
        元组中的值在概念上表示一段字面文本加上一个替换字段。 如果没有字面文本(如果连续出现两个替换字段就会发生这种情况),则 literal_text 将是一个长度为零的字符串。 
        如果没有替换字段,则 field_name, format_spec 和 conversion 的值将为 None。


    get_field(field_name, args, kwargs)
        给定 field_name 作为 parse() (见上文) 的返回值,将其转换为要格式化的对象。 返回一个元组 (obj, used_key)。 
        默认版本接受在 PEP 3101 所定义形式的字符串,例如 "0[name]" 或 "label.title"。 args 和 kwargs 与传给 vformat() 的一样。 返回值 used_key 与 get_value() 的 key 形参具有相同的含义。


    get_value(key, args, kwargs)
        提取给定的字段值。 key 参数将为整数或字符串。 
        如果是整数,它表示 args 中位置参数的索引;如果是字符串,它表示 kwargs 中的关键字参数名。
        args 形参会被设为 vformat() 的位置参数列表,而 kwargs 形参会被设为由关键字参数组成的字典。
        对于复合字段名称,仅会为字段名称的第一个组件调用这些函数;后续组件会通过普通属性和索引操作来进行处理。
        因此举例来说,字段表达式 '0.name' 将导致调用 get_value() 时附带 key 参数值 0。 在 get_value() 通过调用内置的 getattr() 函数返回后将会查找 name 属性。
        如果索引或关键字引用了一个不存在的项,则将引发 IndexError 或 KeyError。


    check_unused_args(used_args, args, kwargs)
        在必要时实现对未使用参数进行检测。 
        此函数的参数是是格式字符串中实际引用的所有参数键的集合(整数表示位置参数,字符串表示名称参数),以及被传给 vformat 的 args 和 kwargs 的引用。 
        未使用参数的集合可以根据这些形参计算出来。 如果检测失败则 check_unused_args() 应会引发一个异常。


    format_field(value, format_spec)
        format_field() 会简单地调用内置全局函数 format()。 提供该方法是为了让子类能够重载它。


    convert_field(value, conversion)
        使用给定的转换类型(来自 parse() 方法所返回的元组)来转换(由 get_field() 所返回的)值。 
        默认版本支持 's' (str), 'r' (repr) 和 'a' (ascii) 等转换类型。

3、Template类

class string.Template(template) 
    该构造器接受一个参数作为模板字符串。 


    substitute(mapping={}, /, **kwds) 
        执行模板替换,返回一个新字符串。  
        mapping 为任意字典类对象,其中的键将匹配模板中的占位符。  
        或者你也可以提供一组关键字参数,其中的关键字即对应占位符。  
        当同时给出 mapping 和 kwds 并且存在重复时,则以 kwds 中的占位符为优先。 


    safe_substitute(mapping={}, /, **kwds) 
        类似于 substitute(),不同之处是如果有占位符未在 mapping 和 kwds 中找到,不是引发 KeyError 异常,而是将原始占位符不加修改地显示在结果字符串中。  
        另一个与 substitute() 的差异是任何在其他情况下出现的 $ 将简单地返回 $ 而不是引发 ValueError。 
        此方法被认为“安全”,因为虽然仍有可能发生其他异常,但它总是尝试返回可用的字符串而不是引发一个异常。  
        从另一方面来说,safe_substitute() 也可能根本算不上安全,因为它将静默地忽略错误格式的模板,例如包含多余的分隔符、不成对的花括号或不是合法 Python 标识符的占位符等等。 


    Template 的实例还提供一个公有数据属性: 
    template 
        这是作为构造器的 template 参数被传入的对象。 一般来说,你不应该修改它,但并不强制要求只读访问。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值