Python常见库及使用
1. re 库
re 库是 Python 中用于处理正则表达式的标准库,提供了一系列强大的功能,可用于字符串的匹配、查找、替换、分割等操作。
正则表达式: 这是对正则表达式中常见元字符和语法的介绍,具体总结如下:
-
数字与非数字:
-
\d:匹配一个数字。例如,aaa\d表示验证的字符串后面必须以aaa开头,且以一个数字结尾。 -
\D:匹配一个非数字,与\d相反。例如,\D\D\D表示一个长度为 3,不包含数字的字符串。 -
字符类型:
-
\w:匹配一个字母(大小写均可)、数字或下划线。例如,12\w45表示12和45中间必须是一个字母,数字,或下划线。 -
\W:匹配既不是字母、数字,也不是下划线的字符,即特殊符号(除下划线)或空格等。例如,12\W45表示12和45中间是一个非字母,非数字,或非下划线的字符。 -
可见与不可见字符:
-
\s:匹配一个看不见的符号,即空格或制表符(Tab 键)。例如,88\s99表示88和99中间须是一个空格或制表符。 -
\S:匹配一个可以看得见的符号,与\s相反。例如,88\S99表示88和99中间须有一个看得见的符号。 -
任意字符:
-
.:表示除\n和\r之外的任何单个字符。例如,....表示任意四个字符。 -
或关系:
-
|:表示或的关系,检测的字符串须满足其中一个时才符合条件。若或关系的前后还有其它字符,需用()将其包裹。例如,aa|bb|cc表示输入的字符串须是aa,或bb,或cc其中的一个;xx(aa|bb|cc)yy表示输入的字符串须是xx开头,yy结尾,且中间是aa,或bb,或cc其中的一个。 -
字符集:
-
[abc]:匹配其中任意一个字符。例如,a[bcd]e表示a和e的中间须是b,或c,或d其中的一个。 [^abc]:表示不与中括号里的任意字符匹配。例如,a[^bcd]e表示a和e的中间除b,c,d这三个字符外,其他的字符都满足。[a-z]:表示a到z中间的所有字符都满足(包括a和z),常用于表示大小写字母范围、数字范围。例如,a[b-d]e等同于a[bcd]e;a[0-9]e表示a和e中间是一个数字,等同于a\de。-
[^a-z]:表示除a到z之外的所有字符都满足。例如,a[^1-3]e表示a和e中间的字符,只要不是1,2,3,则都满足。 -
引用括号内容:
\num(num为数字),表示匹配第num个括号中的结果。例如,对于字符串abcd,ab(c)d\1等同于abcdc,因为\1表示第 1 个小括号中的结果c;ab(c)(d)\1\2等同于abcdcd,也等同于ab(cd)\1,因为\2表示第 2 个小括号的结果d。
-
次数限定:
-
?:匹配前面的子表达式零次或一次。例如,abc?de表示可匹配的字符串为abde(匹配 0 次c)或abcde(匹配 1 次c)。 +:匹配前面的子表达式一次或多次(次数 >= 1,即至少 1 次)。例如,abc+de表示ab和de之前至少有一个c。{n}:n为非负整数,匹配确定的前面的子表达式n次。例如,abc{3}de表示ab和de之间有 3 个c;ab(xx|yy){3}de表示ab和de之间xx或yy的个数合计为 3 个。{n,m}:m和n均为非负整数,其中n<=m,最少匹配n次且最多匹配m次。例如,abc{2,3}de表示ab和de之间有 2 到 3 个c。*:表示匹配前面的子表达式任意次。例如,abc*de表示ab和de之间有任意个数(包括 0)的c。
常用函数
1. re.compile(pattern, flags=0)
- 功能:将正则表达式的字符串形式编译成一个正则表达式对象,这样可以提高匹配效率,尤其是在需要多次使用同一正则表达式时。
- 参数:
pattern:正则表达式的字符串。flags:可选参数,用于指定匹配模式,如re.I(忽略大小写)、re.M(多行模式)等。
2. re.match(pattern, string, flags=0)
- 功能:从字符串的起始位置开始匹配,如果匹配成功则返回一个匹配对象,否则返回
None。 - 参数:
pattern:正则表达式的字符串。string:要匹配的字符串。flags:可选参数,指定匹配模式。
3. re.search(pattern, string, flags=0)
- 功能:在字符串中搜索匹配正则表达式的第一个位置,如果找到则返回一个匹配对象,否则返回
None。 - 参数:与
re.match相同。
4. re.findall(pattern, string, flags=0)
- 功能:在字符串中查找所有匹配正则表达式的子串,并以列表的形式返回。
- 参数:与
re.match相同。
5. re.finditer(pattern, string, flags=0)
- 功能:在字符串中查找所有匹配正则表达式的子串,并返回一个迭代器,迭代器中的每个元素都是一个匹配对象。
- 参数:与
re.match相同。
6. re.sub(pattern, repl, string, count=0, flags=0)
- 功能:在字符串中替换所有匹配正则表达式的子串为指定的字符串。
- 参数:
pattern:正则表达式的字符串。repl:用于替换的字符串。string:要进行替换操作的字符串。count:可选参数,指定最多替换的次数,默认为 0 表示替换所有匹配的子串。flags:可选参数,指定匹配模式。
7. re.split(pattern, string, maxsplit=0, flags=0)
- 功能:根据正则表达式匹配的子串对字符串进行分割,并返回分割后的列表。
- 参数:
pattern:正则表达式的字符串。string:要进行分割操作的字符串。maxsplit:可选参数,指定最多分割的次数,默认为 0 表示分割所有匹配的位置。flags:可选参数,指定匹配模式。
2. os库
在 Python 中,os 模块是一个非常实用的标准库模块,它提供了一种方便的使用操作系统相关功能的方式。通过 os 模块,你可以执行文件和目录操作、获取系统环境信息、执行系统命令等。
1. os.getcwd()
- 功能:返回当前 Python 脚本的工作目录,即当前脚本运行时所在的目录。这有助于确定程序在文件系统中的位置,方便进行文件和目录操作。
- 参数:无。
2. os.chdir(path)
- 功能:改变当前的工作目录到指定的
path。在进行文件操作时,如果需要在不同的目录下进行读写操作,就可以使用该函数切换工作目录。 - 参数:
path:要切换到的目标目录的路径,可以是绝对路径或相对路径。
3. os.mkdir(path)
- 功能:创建一个新的目录。如果指定的目录已经存在,会抛出
FileExistsError异常。 - 参数:
path:要创建的目录的路径。
4. os.makedirs(path, exist_ok=False)
- 功能:递归地创建目录,即如果父目录不存在,会一并创建。可以通过
exist_ok参数控制当目录已经存在时的行为。 - 参数:
path:要创建的目录的路径,可以是包含多级目录的路径。exist_ok:可选参数,默认为False。如果设置为True,当目录已经存在时不会抛出异常;如果为False,则会抛出FileExistsError异常。
5. os.rmdir(path)
- 功能:删除一个空目录。如果目录不为空,会抛出
OSError异常。 - 参数:
path:要删除的空目录的路径。
6. os.listdir(path='.')
- 功能:返回指定目录下的所有文件和目录的名称列表。如果不指定
path,默认返回当前工作目录下的内容。 - 参数:
path:可选参数,指定要列出内容的目录路径,默认为当前工作目录。
7. os.path.join(path1, path2, ...)
- 功能:将多个路径组件拼接成一个完整的路径,会根据不同的操作系统自动处理路径分隔符(如 Windows 下是
\,Linux 和 macOS 下是/)。 - 参数:
path1, path2, ...:多个路径组件,可以是字符串形式的目录名或文件名。
8. os.path.exists(path)
- 功能:检查指定的路径是否存在,无论是文件还是目录。
- 参数:
path:要检查的路径。
9. os.path.isfile(path)
- 功能:检查指定的路径是否为文件。
- 参数:
path:要检查的路径。
10. os.path.isdir(path)
- 功能:检查指定的路径是否为目录。
- 参数:
path:要检查的路径。
11. os.path.getsize(path)
- 功能:返回指定文件的大小,单位是字节。如果指定的路径不是文件,可能会抛出异常。
- 参数:
path:要获取大小的文件的路径。
12. os.environ
- 功能:这是一个包含所有环境变量的字典,可以用于获取和设置系统的环境变量。环境变量可以影响程序的运行环境和行为。
- 参数:无。
13. os.system(command)
- 功能:执行系统命令。在 Python 程序中可以通过该函数调用操作系统的命令行工具。
- 参数:
command:要执行的系统命令,是一个字符串形式。
3. random库
1. random.random()
- 功能:返回一个范围在 0.0(包含)到 1.0(不包含)之间的随机浮点数。常用于需要在该特定区间内生成随机小数的场景,例如模拟概率分布。
- 参数:无。
2. random.randint(a, b)
- 功能:生成一个介于
a和b之间(包含a和b)的随机整数。可用于需要随机整数的场景,如抽奖、随机索引选择等。 - 参数:
a:随机整数范围的下限。b:随机整数范围的上限。
3. random.uniform(a, b)
- 功能:返回一个介于
a和b之间的随机浮点数。适用于需要在指定区间内生成随机小数的情况,区别于random.random(),其区间可自定义。 - 参数:
a:随机浮点数范围的下限。b:随机浮点数范围的上限。
4. random.choice(seq)
- 功能:从非空序列
seq(如列表、元组、字符串等)中随机选取一个元素。常用于从一组选项中随机选择一个的场景,如随机选择一个颜色、一个名字等。 - 参数:
seq:要从中选择元素的非空序列。
5. random.shuffle(x)
- 功能:将可变序列
x(如列表)中的元素顺序随机打乱。常用于需要对元素顺序进行随机化的场景,如洗牌、随机排序等。 - 参数:
x:要打乱顺序的可变序列。
6. random.sample(population, k)
- 功能:从
population序列中随机抽取k个不重复的元素,返回一个新的列表。适用于需要从大量数据中随机选取部分不重复数据的场景,如抽样调查。 - 参数:
population:要进行抽样的序列。k:要抽取的元素个数。
7. random.seed(a=None, version=2)
- 功能:设置随机数生成器的种子。当使用相同的种子时,随机数生成器会生成相同的随机数序列,便于调试和结果复现。
- 参数:
a:可选参数,用于指定种子值。如果为None,则使用系统时间作为种子。version:可选参数,指定生成器的版本,默认值为 2。
4. json库
1. json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
- 功能:将 Python 对象(如字典、列表等)转换为 JSON 格式的字符串。常用于将 Python 数据结构转换为适合网络传输或存储的 JSON 字符串。
- 参数:
obj:要转换为 JSON 字符串的 Python 对象。skipkeys:如果为True,则在对象的键不是基本类型(str,int,float,bool,None)时跳过这些键,默认为False。ensure_ascii:如果为True,所有非 ASCII 字符将被转义;如果为False,这些字符将原样输出,默认为True。check_circular:如果为False,则不检查循环引用,默认为True。allow_nan:如果为False,在遇到NaN,Infinity或-Infinity时将引发ValueError,默认为True。cls:自定义 JSON 编码器类。indent:指定缩进的空格数,用于美化输出,若为None则输出为紧凑格式。separators:指定用于分隔项和键值对的字符,默认是(', ', ': ')。default:用于处理无法序列化的对象的函数。sort_keys:如果为True,则字典的键将按字母顺序排序,默认为False。
2. json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
- 功能:将 JSON 格式的字符串解析为 Python 对象。常用于从网络请求或文件中获取 JSON 数据后,将其转换为 Python 可操作的数据结构。
- 参数:
s:要解析的 JSON 格式的字符串。cls:自定义 JSON 解码器类。object_hook:用于处理解析后字典的函数。parse_float:用于解析浮点数的函数。parse_int:用于解析整数的函数。parse_constant:用于解析NaN,Infinity或-Infinity的函数。object_pairs_hook:用于处理解析后有序键值对列表的函数。
3. json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
- 功能:将 Python 对象转换为 JSON 格式并写入文件对象
fp。常用于将 Python 数据保存为 JSON 文件。 - 参数:
obj:要转换为 JSON 并写入文件的 Python 对象。fp:文件对象,用于写入 JSON 数据。- 其余参数与
json.dumps相同。
4. json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
- 功能:从文件对象
fp中读取 JSON 数据并解析为 Python 对象。常用于从 JSON 文件中读取数据并在 Python 中使用。 - 参数:
fp:文件对象,用于读取 JSON 数据。- 其余参数与
json.loads相同。
发表评论