第三十五回 梁山泊吴用举戴宗 揭阳岭宋江逢李俊-python中用Shell通配符匹配字符串

宋江被抓住,判脊杖二十,刺配江州牢城。临走时宋太公专门叮嘱他不要入伙梁山。

宋江和差人专门挑小路走,想避开梁山,结果还是被赤发鬼刘唐守到了。大家把宋江请上山,都参拜了宋江。看宋江执意要走,吴用说自己有个好朋友在江州做押牢节级,叫戴宗,人称神行太保,到时候可以照应下。

又行了半个月,来到揭阳岭,三人到酒店里吃酒,结果被放倒了。正巧混江龙李俊来寻宋江,这才救了宋江一命。李俊还介绍了出洞蛟童威和翻江蜃童猛两兄弟,以及店家催命判官李立给宋江认识。

在宋江的冒险旅程中,他不断遇到各种挑战和机遇。就像在计算机编程中,我们也需要处理各种复杂的情况,比如python使用Shell通配符来匹配字符串。

python用Shell通配符匹配字符串

问题

你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串

解决方案

fnmatch 模块提供了两个函数—— fnmatch()fnmatchcase() ,可以用来实现这样的匹配。用法如下:

from fnmatch import fnmatch, fnmatchcase
print(fnmatch('foo.txt', '*.txt'))

print(fnmatch('foo.txt', '?oo.txt'))

print(fnmatch('Dat45.csv', 'Dat[0-9]*'))

names = ['Dat1.csv', 'Dat2.csv', 'config.ini', 'foo.py']
[name for name in names if fnmatch(name, 'Dat*.csv')]

fnmatch() 函数使用底层操作系统的大小写敏感规则(不同的系统是不一样的)来匹配模式。比如在Linux系统:

>>> fnmatch('foo.txt', '*.TXT')
False

如果对这个区别很在意,可以使用 fnmatchcase() 来代替。它完全使用你的模式大小写匹配。比如:

fnmatchcase('foo.txt', '*.TXT')
False

这两个函数通常会被忽略的一个特性是在处理非文件名的字符串时候它们也是很有用的。 比如,假设有一个街道地址的列表数据,可以像这样写列表推导:

addresses = [
    '5412 N CLARK ST',
    '1060 W ADDISON ST',
    '1039 W GRANVILLE AVE',
    '2122 N CLARK ST',
    '4802 N BROADWAY',
]



from fnmatch import fnmatchcase
[addr for addr in addresses if fnmatchcase(addr, '* ST')]
# [addr for addr in addresses if fnmatchcase(addr, '54[0-9][0-9] *CLARK*')]

使用glob做文件名匹配

fnmatch() 函数匹配能力介于简单的字符串方法和强大的正则表达式之间。 如果在数据处理操作中只需要简单的通配符就能完成的时候,这通常是一个比较合理的方案。

如果代码需要做文件名的匹配,也可以使用 glob 模块:

import glob  
  
# 搜索当前目录下所有以"汉"字结尾的文件或目录  
matching_paths = glob.glob('*txt')  
  
# 打印匹配到的文件或目录路径  
for path in matching_paths:  
    print(path)

 

离开揭阳岭后,三人来到了一个揭阳镇上,看见一个大汉在耍枪棒卖膏药。宋江给了五两白银,那大汉说:这么大一个揭阳镇,竟然没个识功夫的有钱人,还不如一个流放的人。这话惹恼了揭阳镇的一霸,人群里一个大汉说:哪里来的囚徒,赶来灭我们揭阳镇的威风!

欲知后市如何,且听下回分解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/393091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python学习路线图

防止忘记,温故知新 进阶路线

思迈特再获国家权威认证:代码自主率98.78%

日前,思迈特软件自主研发的商业智能与数据分析软件(Smartbi Insight)通过中国赛宝实验室(工业和信息化部电子第五研究所)代码扫描测试,Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩&#xf…

Json格式文件

1.把Java对象转换成Json格式 1.1.导入依赖 这里推荐一个插件Jackson&#xff0c;其提供的类可以让Java的类转换成Jason格式文件 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><vers…

Aquarius Fantasy Series Orcs

使用标准管道创建。目前不支持URP或HDRP。 - 如果想将其转换为URP或类似材质。90%的材质可以完美转换。但是树叶材质和岩石顶盖材质无法转换,除非有自己的材质,无论是自己制作的,还是其他资源包。布料也是如此,每块布料都是单面的,使用简单的材质来达到双面效果。所有其他…

【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

ChatGPT的大致原理

国外有个博主写了一篇博文&#xff0c;名字叫TChatGPT: Explained to KidsQ」&#xff0c; 直译过来就是&#xff0c;给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 &#xff0c;ChatGPT几乎可以算得上无所不知&#xff0c;起码给小孩…

第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint

2. ip::tcp::endpoint ip::tcp::socket用于连接TCP服务端的 async_connect()方法的第一个入参是const endpoint_type& peer_endpoint. 此处的类型 endpoint_type 是 ip::tcp::endpoint 在 在 ip::tcp::socket 类内部的一个别名。 libucurl 库采用字符串URL表达目标的地…

信息技术教资科3选择题相关知识点

目录 一.数据压缩 1.无损压缩 2.有损压缩 二.计算题 三.Excel表 四.powerpoint 五.Photoshop 六.FLASH动画 1.动画类型 2.鼠标动作命令 3.动作命令 七.人工智能的应用领域 八.网络相关 八.并行接口和串行接口 九.HTML标签 十.其他知识点 若你是计算机相关专业…

(OpenCV)图片拼接

前言 图片拼接在许多领域都有广泛的应用&#xff0c;包括但不限于以下几个方面&#xff1a; 全景摄影&#xff1a;在摄影中&#xff0c;通过将多张照片拼接在一起可以实现全景照片的效果。这在旅游景点、房地产展示等领域有着广泛的应用&#xff0c;能够提供更加生动、真实的视…

uni-app使用uView打开弹出层后输入框聚焦时placeholder错位问题

这里就不放效果了&#xff0c;大概意思就是在使用uView的popus时&#xff0c;在底部弹出后&#xff0c;如果弹窗中的输入框会造成一瞬间的placeholder文字错位&#xff0c;这个问题的主要是因为uView安全区适配导致 uView相关文档 https://www.uviewui.com/components/safeAr…

练习接口测试第一步骤

最近一段时间学了Python语言&#xff0c;重新学了 Java&#xff0c;js&#xff0c;html语言&#xff0c;CSS&#xff0c;linux&#xff0c;一堆测试工具&#xff1b;唉&#xff5e; 在接触接口测试过程中补了很多课&#xff0c; 终于有点领悟接口测试的根本&#xff1b; 偶是…

笔记 记录

前言 个人记录 官网模版 基于 vue2 示例图

C++初阶:容器适配器介绍、stack和queue常用接口详解及模拟实现

介绍完了list类的相关内容后&#xff1a;C初阶&#xff1a;适合新手的手撕list&#xff08;模拟实现list&#xff09; 接下来进入新的篇章&#xff0c;stack和queue的介绍以及模拟&#xff1a; 文章目录 1.stack的初步介绍2.stack的使用3.queue的初步介绍4.queue的使用5.容器适…

gspread,一个超强的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超强的 Python 库 - gspread。 Github地址&#xff1a;https://github.com/burnash/gspread Google Sheets是一款强大的在线电子表格工具&#xff0c;而gspread是一个Python库&#xff0c;可以…

Sentinel从入门到“精通”,从源码层面学习Sentinel

B站视频讲解 文章目录 一、安装1、原生使用2、dashboard整合2-1、非starter整合2-1-1、公共2-1-2、Filter2-1-3、AOP2-2、starter 整合 3、总结 二、常见的策略1、限流1-1、基于QPS 限流1-2、基于线程数限流 2、降级2-1、慢调用比例2-2、异常数&#xff08;限流异常不算&#x…

C++ 蛇形矩阵的制作

#include <stdio.h>int arr[101][101]; int n; int i,j; int m; int tmp; void Print(){for(i1;i<n;i){for(j1;j<n-i1;j)printf("%d ",arr[i][j]);puts("");} }void fun(){//i j 初值为1i1,j1;//保底用 tmp 1;//计数从1开始m 1;while(1)…

异常—JAVA

文章目录 异常的概念异常的体系结构异常的分类运行时异常 异常的处理防御式编程异常的抛出异常的捕获异常声明throwstry—catch捕获并处理finally 异常的处理流程自定义异常类 异常的概念 首先在学习之前我们要先知道什么是异常&#xff0c;异常简单来说就是不对的地方我们说一…

MySQL DQL 基本查询

一.概念 数据查询不应只是简单返回数据库中存储的数据&#xff0c;还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。 二.语法格式 select 列名 from 表 where 条件 1.查询所有的商品 select * from product; 2.查询商品名和商品价格 select pname,price from…

Python实现时间序列分析简单指数平滑模型(SimpleExpSmoothing算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中的简单指数平滑&#xff08;Simple Exponential Smoothing, SES&#xff09;模型是一种…

哈希表——位图

哈希表——位图 基本概念一道面试题位图实现设置存在或不存在检查存在 解决一开始的问题 之前我们已经了解了哈希表的底层实现&#xff0c;今天我们来了解一下哈希表思想的衍生产物——位图。 基本概念 在了解位图之前&#xff0c;我们先来了解一些简单的概念。 我们都知道&a…