适合纯文科生的 python 100个知识点 实践八

169 阅读4分钟

本文源自白璽,创自白璽。转载请标注出处。本文参与掘金日新计划【博客搬家】

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的答案总结的知识点,有不足之处请大佬们给出反馈。