本文源自白璽,创自白璽。转载请标注出处。本文参与掘金日新计划【博客搬家】
PythonPython 标准库
51 argparse库
argparse是Python标准库中用于解析命令行参数的模块,可以让我们方便地编写命令行界面的应用程序。
下面是一个简单的使用argparse的示例代码:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
这个代码实现的功能是从命令行输入一些整数,并对这些整数进行计算。在这个示例中,我们通过ArgumentParser类创建了一个解析器对象,然后使用add_argument方法添加了两个参数:
- integers:表示要输入的整数,可以输入多个,使用nargs='+'表示可以输入多个参数,同时也使用了metavar来指定这些参数的名字。
- sum:表示是否对输入的整数进行求和计算。使用了dest参数来指定参数名称,action参数来指定操作,如果使用了该参数则将其值设为const,否则设为default,然后在解析时使用parse_args方法获取参数对象,最后根据参数的值进行相应的计算。
使用命令行输入以下命令可以运行这个代码:
python argparse_example.py 1 2 3 4 5 --sum
这个命令会将输入的整数计算出来的最大值输出。如果加上--sum参数,则会将输入的整数进行求和计算并输出。
52 re库
re库是Python的正则表达式模块,提供了各种函数用于处理和操作字符串。以下是一些常用的re库函数及其示例代码:
52.1 re.compile(pattern, flags=0)
- 编译一个正则表达式模式为正则表达式对象
- pattern: 正则表达式模式
- flags: 可选参数,用于控制匹配方式
import re
# 编译一个正则表达式模式
pattern = re.compile(r'\d+')
# 使用正则表达式对象匹配字符串
result = pattern.findall('abc123def456')
# 输出匹配结果
print(result) # ['123', '456']
52.2 re.match(pattern, string, flags=0)
- 从字符串的开头开始匹配正则表达式模式
- pattern: 正则表达式模式
- string: 待匹配的字符串
- flags: 可选参数,用于控制匹配方式
import re
# 匹配正则表达式模式
result = re.match(r'hello', 'hello, world!')
# 输出匹配结果
print(result) # <re.Match object; span=(0, 5), match='hello'>
52.3 re.search(pattern, string, flags=0)
- 在字符串中搜索正则表达式模式
- pattern: 正则表达式模式
- string: 待匹配的字符串
- flags: 可选参数,用于控制匹配方式
import re
# 搜索正则表达式模式
result = re.search(r'world', 'hello, world!')
# 输出匹配结果
print(result) # <re.Match object; span=(7, 12), match='world'>
52.4 re.findall(pattern, string, flags=0)
- 返回字符串中所有与正则表达式模式匹配的非重叠子串列表
- pattern: 正则表达式模式
- string: 待匹配的字符串
- flags: 可选参数,用于控制匹配方式
import re
# 查找所有匹配的子串
result = re.findall(r'\d+', 'abc123def456')
# 输出匹配结果
print(result) # ['123', '456']
52.5 re.sub(pattern, repl, string, count=0, flags=0)
- 将字符串中与正则表达式模式匹配的部分替换为指定的字符串
- pattern: 正则表达式模式
- repl: 要替换成的字符串
- string: 待匹配的字符串
- count: 可选参数,指定替换次数,默认为0,表示替换所有匹配项
- flags: 可选参数,用于控制匹配方式
import re
# 替换匹配的子串
result = re.sub(r'\d+', 'X', 'abc123def456')
# 输出替换后的字符串
print(result) # 'abcXdefX'
52.6 re.split(pattern, string, maxsplit=0, flags=0)
- 根据正则表达式模式将字符串分割为列表
- pattern: 正则表达式模式
- string: 待匹配的字符串
- maxsplit: 可选参数,指定分割次数,默认为0,表示分割所有匹配项
- flags: 可选参数,用于控制匹配方式
import re
# 分割字符串
result = re.split(r'\s+', 'hello world!')
# 输出分割后的列表
print(result) # ['hello', 'world!']
52.7 re.finditer(pattern, string, flags=0)
- 返回字符串中所有与正则表达式模式匹配的非重叠子串的迭代器
- pattern: 正则表达式模式
- string: 待匹配的字符串
- flags: 可选参数,用于控制匹配方式
import re
# 查找所有匹配的子串并返回迭代器
result = re.finditer(r'\d+', 'abc123def456')
# 输出匹配结果
for match in result:
print(match.group()) # '123' '456'
52.8 re.IGNORECASE / re.I
- 忽略正则表达式匹配时的大小写
import re
# 匹配不区分大小写
result = re.match(r'hello', 'HELLO, WORLD!', re.IGNORECASE)
# 输出匹配结果
print(result) # <re.Match object; span=(0, 5), match='HELLO'>
52.9 re.MULTILINE / re.M
- 匹配多行文本,即 ^ 和 $ 匹配每行文本的开头和结尾,而不仅仅是整个字符串的开头和结尾
import re
# 匹配多行文本
result = re.findall(r'^\d+', '123\n456\n789', re.MULTILINE)
# 输出匹配结果
print(result) # ['123', '456', '789']
52.10 re.DOTALL / re.S
- 让 . 匹配任意字符,包括换行符
import re
# 匹配任意字符,包括换行符
result = re.findall(r'hello.*world', 'hello\nworld', re.DOTALL)
# 输出匹配结果
print(result) # ['hello\nworld']
以上是re库的一些常用函数及其示例代码。通过使用这些函数,可以方便地处理和操作字符串,实现文本匹配和替换等功能。
本文是结合ChatGPT的答案总结的知识点,有不足之处请大佬们给出反馈。