Python 通配符

Python 通配符

Python 通配符

Python 编程中,通配符是一种非常常见的概念。通过通配符,我们可以灵活地匹配字符串,对比和搜索操作变得非常便捷。Python 中有多种方式可以使用通配符,本文将介绍常用的通配符方法和示例代码。

fnmatch 模块

Python 的 fnmatch 模块提供了 fnmatch()fnmatchcase() 两个函数,用于模式匹配文件名。这两个函数使用 Unix shell 风格的语法进行匹配,可以用 * 匹配任意字符,? 匹配一个字符。

fnmatch()

import fnmatch

pattern = 'file*.txt'
tests = ['file1.txt', 'file2.txt', 'document.txt']

for test in tests:
    if fnmatch.fnmatch(test, pattern):
        print(test)

运行结果:

file1.txt
file2.txt

fnmatchcase()

fnmatchcase() 和 fnmatch() 类似,但是区分大小写。下面的示例将只匹配大写的文件名。

import fnmatch

pattern = 'FILE*.txt'
tests = ['file1.txt', 'FILE2.txt', 'document.txt']

for test in tests:
    if fnmatch.fnmatchcase(test, pattern):
        print(test)

运行结果:

FILE2.txt

glob 模块

glob 模块提供了用于文件通配的功能,可以使用通配符来匹配文件路径。与 fnmatch 模块不同的是,glob 模块返回的是匹配的文件路径列表。

import glob

files = glob.glob('*.txt')

for file in files:
    print(file)

运行结果:

file1.txt
file2.txt
document.txt

re 模块

Python 中的 re 模块提供了正则表达式功能,可以使用正则表达式来匹配字符串。正则表达式是一种强大的匹配工具,可以灵活地匹配各种复杂的字符串格式。

re.match()

re.match() 方法从字符串的起始位置开始匹配,如果匹配成功返回一个匹配的对象,否则返回 None

import re

pattern = 'geek.*com'
tests = ['geek-docs.com', 'geek-forum.com', 'geekblog.com']

for test in tests:
    if re.match(pattern, test):
        print(test)

运行结果:

geek-docs.com

re.search()

re.search() 方法扫描整个字符串并返回第一个成功的匹配对象。下面示例用正则表达式匹配包含 geek 的字符串。

import re

pattern = 'geek'
tests = ['geek-docs.com', 'geek-forum.com', 'geekblog.com']

for test in tests:
    if re.search(pattern, test):
        print(test)

运行结果:

geek-docs.com
geek-forum.com
geekblog.com

re.findall()

re.findall() 方法返回字符串中所有与正则表达式匹配的字符串,以列表形式返回。下面示例匹配字符串中的数字。

import re

pattern = '\d+'
test = 'geek-docs.com has 1000 visitors per day'

print(re.findall(pattern, test))

运行结果:

['1000']

总结

本文介绍了 Python 中通配符的使用方法,包括 fnmatch 模块、glob 模块和 re 模块。通过这些库,我们可以方便地进行文件名的匹配和字符串的搜索操作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程