python基础查漏补缺3--函数&字符串
1. 全局变量 global
name = 'jack' def say_hello(): print('hello ' + name + '!') def change_name(new_name): global name name = new_name >>> say_hello() hello jack! >>> change_name('Piper') >>> say_hello() hello Piper!
2. 字符函数 ord chr:ascii
>>> ord('a') 97 >>> ord('c') 99 >>> chr(97) 'a' >>> chr(100) 'd'
3. 字符串长度计算 len
>>> len('\\') 1 >>> len('abc') 3 >>> len('a\nb\nc') 5
4. 字符串切片str[start:end:step]
>>> food = 'apple pie' >>> food[0:4] 'appl' >>> food[0:4:2] 'ap' >>> food[0:6:2] 'ape' >>> food[::-1] 'eip elppa' >>> food[-1:-5:-1] 'eip '
5. 字符串测试函数
函 数 名 | 什么情况返回True |
s.endswith(t) | s 以字符串 t 结尾 |
s.startswith(t) | s 以字符串 t 开头 |
s.isalnum() | s 只包含字母或数字 |
s.isalpha() | s 只包含字母 |
s.isdecimal() | s 只包含十进制数字的字符 |
s.isdigit() | s 只包含数字字符 |
s.isidentifier() |
s 是合法的标识符 |
s.islower() | s 只包含小写字母 |
s.isnumeric() | s 只包含数字 |
s.isprintable() | s 只包含可打印字符 |
s.isspace() | s 只包含空白字符 |
s.istitle() | s 是个大小写符合标准要求的字符串(title-case)的字符串 |
s.isupper() | s 只包含大写字母 |
t in s | s 包含字符串 t |
>>> 'abcd'.endswith('d') True >>> 'abcd'.endswith('c') False >>> 'abcd'.startswith('a') True >>> 'abcd'.startswith('b') False >>> 'abcd'.isalnum() True >>> '123'.isalnum() True >>> 'abcd123'.isalnum() True >>> 'abcd123.'.isalnum() False >>> 'abcd'.isalpha() True >>> 'abcd1'.isalpha() False >>> '123'.isdecimal() True >>> '123d'.isdecimal() False >>> 'abc'.isidentifier() True >>> '~~~'.isidentifier() False >>> 'abc'.islower() True >>> 'Abc'.islower() False >>> '123.1'.isnumeric() False >>> '-123'.isnumeric() False >>> '123'.isnumeric() True >>> '12.3'.isdecimal() False >>> '\\\\'.isprintable() True >>> '\n'.isprintable() False >>> ''.isspace() False >>> ' '.isspace() True >>> 'This Is A Title'.istitle() True >>> 'ABC'.isupper() True >>> 'AbcC'.isupper() False >>> 'a' in 'abc' True >>> 'd' in 'abc' False
6. 字符串搜索函数
函 数 名 | 返 回 值 |
s.find(t) | 如果没有找到字符串 t,返回-1;否则返回 t 在 s 中的起始位置 |
s.rfind(t) | 与find相同,但是从右向左搜索 |
s.index(t) | 与find相同,但如果在 s 中找不到 t, 则引发ValueError异常 |
s.rindex(t) | 与index相同,但从右向左搜索 |
>>> 'abc'.find('b') 1 >>> 'abcd'.find('a') 0 >>> 'abcd'.rfind('a') 0 >>> 'abcda'.rfind('a') 4 >>> 'abc'.find('ccc') -1 >>> 'abcda'.index('a') 0 >>> 'abcda'.rindex('a') 4 >>> 'abcda'.index('m') Traceback (most recent call last): File "<pyshell#101>", line 1, in <module> 'abcda'.index('m') ValueError: substring not found
7. 改变大小写的函数
函 数 名 | 返回的字符串 |
s.capitalize() | 将 s[0] 改为大写,其余小写 |
s.lower() | 让 s 的所有字母都小写 |
s.upper() | 让 s 的所有字母都大写 |
s.swapcase() | 将小写字母改为大写,并将大写字母改为小写 |
s.title() | 让 s 的大小写符合标题的要求 |
>>> 'abcd'.capitalize() 'Abcd' >>> 'ABCD'.lower() 'abcd' >>> 'abcd'.upper() 'ABCD' >>> 'AbCd'.swapcase() 'aBcD' >>> 'hello world'.title() 'Hello World'
8. 设置字符串格式的函数
函 数 名 | 返回的字符串 |
s.center(n, ch) | 包含 n 个字符的字符串,其中 s 位于中央,两边用字符 ch 填充 |
s.ljust(n, ch) | 包含 n 个字符的字符串,其中 s 位于左边,右边用字符 ch 填充 |
s.rjust(n, ch) | 包含 n 个字符的字符串,其中 s 位于右边,左边用字符 ch 填充 |
>>> 'abcd'.center(10, 'm') 'mmmabcdmmm' >>> 'abcd'.ljust(10, 'm') 'abcdmmmmmm' >>> 'abcd'.rjust(10, 'm') 'mmmmmmabcd'
9. 字符串剥离函数
函 数 名 | 返回的字符串 |
s.strip(ch) | 从 s 开头和末尾删除所有包含在字符串ch中的字符 |
s.lstrip(ch) | 从 s 开头(左端)删除所有包含在字符串 ch 中的字符 |
s.rstrip(ch) | 从 s 末尾(右端)删除所有包含在字符串 ch 中的字符 |
>>> ' abc '.strip() 'abc' >>> 'aaaabbbbbccccaaaa'.strip('a') 'bbbbbcccc' >>> 'aaaabbbbbccccaaaa'.strip('ab') 'cccc' >>> ' abc '.lstrip() 'abc ' >>> 'aaaabbbbccccaaaa'.lstrip('a') 'bbbbccccaaaa' >>> 'aaaabbbbbccccaaaa'.lstrip('ab') 'ccccaaaa' >>> 'aaaabbbbbccccaaaa'.rstrip('a') 'aaaabbbbbcccc' >>> 'aaaabbbbbccccaaaabbbb'.rstrip('ab') 'aaaabbbbbcccc'
10. 字符串拆分函数
函 数 名 | 返回的字符串 |
s.partition(t) | 将 s 拆分为三个字符串(head、t 和 tail), 其中 head 为 t 前面的子串,tail 为 t 后面的子串 |
s.rpartition(t) | 与 partition相同,但从 s 的右侧开始搜索 t |
s.split(t) | 以 t 为分隔符,将 s 划分成一系列的子串,并返回一个由这些子串组成的列表 |
s.rsplit(t) | 与 split 相同,但从 s 的右端开始搜索 t |
s.splitlines() | 返回一个由 s 中的各行组成的列表 |
>>> 'www.google.com'.partition('.') ('www', '.', 'google.com') >>> 'www.google.com'.rpartition('.') ('www.google', '.', 'com') >>> 'www.google.com'.split('.') ['www', 'google', 'com'] >>> 'aaa\nbbb\n'.splitlines() ['aaa', 'bbb']
11. 字符串替换函数
函 数 名 | 返回的字符串 |
s.replace(old, new) | 将 s 中的每个 old 替换为 new |
s.expandtabs(n) | 将 s 中的每个制表符扩展为空格,制表符宽度为n |
>>> 'abcd'.replace('a','A') 'Abcd' >>> 'a b c'.expandtabs(4) 'a\u3000b\u3000c'
12. 其他字符串函数
函 数 名 | 返回的值 |
s.count(t) | t 在 s 中出现的次数 |
s.encode() | 设置 s 的编码 |
s.join(sep) | 使用 s 将 sep 中的字符串连接成一个字符串 |
s.maketrans(old, new) | 创建一个转换表,用于将 old 中的字符改为 new 中相应的字符; |
s.translate(table) | 使用指定转换表(使用 maketrans 创建的)对 s 中的字符进行替换 |
s.zfill(width) | 在 s 左边添加足够多的 0,让字符串的长度为 width |
>>> 'abca'.count('a') 2 >>> 'abcd'.encode() b'abcd' >>> b'abcd'.decode() 'abcd' >>> '-'.join(['www','google','com']) 'www-google-com' >>> lee_table = ''.maketrans('EIOBT', '31087') >>> 'BE COOL. SPEAK LEET!'.translate(lee_table) '83 C00L. SP3AK L337!' >>> '23'.zfill(4) '0023' >>> '-85'.zfill(5) '-0085'