string 模块大部分功能已被 str对象 实现,但一些字符常量人保留了下来
字符串常量
string 模块中保留了常见的字符串常量,并给特定的常量规了类。
1
2
3
4
5
6
7
8
9
10
11
12
| # string.py
# Some strings for ctype-style character classification
whitespace = ' \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
hexdigits = digits + 'abcdef' + 'ABCDEF'
octdigits = '01234567'
punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
printable = digits + ascii_letters + punctuation + whitespace
|
例如,是否是大小写字符,就可以通过 ascii_lowercase 、ascii_uppercase 两个判断。
1
2
3
4
| import string
if 's' in string.ascii_lowercase:
print('s in ascii_lowercase.')
|
在 string 模块中,format 需要通过 Formatter类 实现,template 需要通过 Template类 实现,现在这两项功能已经在 str对象 中由 format() 同一实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| def FormatterTest():
"""string formatter class test"""
format_string = string.Formatter()
s_1 = format_string.format("{a} + {b} = {c}", a = 1, b = 2, c = 3) # same as str.format()
print(s_1)
print("{a} + {b} = {c}".format(a = 1, b = 2, c = 3))
def TemplatesTest():
"""diff templates compare"""
values = {'var': 'foo'}
t_1 = string.Template("""
Variable : $var
Escape : $$
Variable in text: ${var}iable
""")
print('string Template:', t_1.substitute(values))
t_2 = """
Variable : %(var)s
Escape : %%
Variable in text: %(var)siable
"""
print('Interpolation:', t_2 % values)
t_3 = """
Variable : {var}
Escape : {{}}
Variable in text: {var}iable
"""
print('Format:', t_3.format(**values))
|
一些有趣的str对象函数总结
在 str对象 中,有一些比较有趣,平时用的比较少的函数。
- capitalize - 将字符串的首字母大小,其他位置小写。
- title - 将每个单词的首字母大写,其他位置小写。
- casefold - 将每个字符都转换为小写,和lower不同的是,casefold是严格的转换,例如 将 ß 转换为 ss。
- center - 将字符串居中,其他位置用指定字符填充
- isprintable - 字符串是否为可以打印的字符串,其他的is开头的函数类似。
- partition - 将字符串按指定字符分割成三块,指定字符前为head,指定字符为一部分,指定字符后为tail。类似于split。
- maketrans - 制作字符转换map。
- translate - 使用字符转换map转换字符串中的对应字符。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| def StrFunction():
s_1 = "hello wOrld"
print("s_1.capitalize() -> ", s_1.capitalize())
print("s_1.title() -> ", s_1.title())
print("s_1.casefold() -> ", s_1.casefold())
print("s_1.center() -> ", s_1.center(20, 'z'))
print("s_1.isprintable() -> ", s_1.isprintable())
print("s_1.partition() -> ", s_1.partition('l'))
print("s_1.rpartition() -> ", s_1.rpartition('l'))
trantab = str.maketrans('aeiou', '12345')
print("s_1.translate() -> ", s_1.translate(trantab))
# output
s_1.capitalize() -> Hello world
s_1.title() -> Hello World
s_1.casefold() -> hello world
s_1.center() -> zzzzhello wOrldzzzzz
s_1.isprintable() -> True
s_1.partition() -> ('he', 'l', 'lo wOrld')
s_1.rpartition() -> ('hello wOr', 'l', 'd')
s_1.translate() -> h2ll4 wOrld
|
Author
Alfons
LastMod
0001-01-01
License
Creative Commons BY-NC-ND 3.0