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

news2025/3/12 23:32:55

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

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

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

在宋江的冒险旅程中,他不断遇到各种挑战和机遇。就像在计算机编程中,我们也需要处理各种复杂的情况,比如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)

 

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护眼台灯该怎么选?2024年五大爆款品牌大盘点

护眼台灯是孩子学习过程中的得力助手,除了能提高学习效率外还能保护眼睛。但一些劣质的护眼灯可能存在各种问题,列如安全耐用性差、耐腐蚀耐磨性差、无法起到保护眼睛作用、光照刺眼不适等问题,这让很多家长在购入护眼灯时犯了难,…

林浩然与杨凌芸的Java集合奇遇记

林浩然与杨凌芸的Java集合奇遇记 The Java Collection Chronicles of Lin Haoran and Yang Lingyun 在一个充满代码香气的午后,程序员男主角林浩然正在他的编程世界里挥舞着键盘剑,探索Java王国中的神秘宝藏——集合。而我们的女主角杨凌芸,作…

测试文章笔记-SQL3种优化方法

SQL语句优化: 本质:降低执行时间 **核心思路:**找到执行计划中开销较高的操作,改写SQL语句或改变表访问方式调整执行计划。 举例: 1.使用索引替代全表扫描(索引:是帮助MysQL高效获取数据的数…

自定义Linux登录自动提示语

设置提示语的方式 在Linux系统中,可以通过修改几个特定的文件来实现在用户登录时自动弹出提示语。以下是几个常用的方法: 1. 修改/etc/issue文件: 这个文件用于显示本地登录前的提示信息 sudo vi /etc/issue在项目合作的时候,…

哈希表——位图

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

电视盒子什么牌子好?老烧实测2024电视盒子排行榜

电视盒子价格不贵,但功能丰富,看点播、直播,玩游戏,上网课等都不在话下,对大部分家庭来说电视盒子是必备的。不过面对众多产品的时候我们都不知道电视盒子什么牌子好,我是多年电视盒子老用户了,…

比较可相交4点结构迭代次数的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有6个节点,AB训练集各由6张二值化的图片组成,让差值结构有4个点,收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 如果行和列可以自由的变换,4个…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(2)房屋价格预测模型搭建

下面学习一个具体的实例,关于中介根据历史房屋价格,进行房价评估和预测的方法。 大家都知道,中介要给房东和客户报价,一般人是比较有经验的,资深的经纪人,往往会报出更符合市场的价格,再进行一…

谷达冠楠电商:现在开网店能赚钱吗

随着互联网技术的迅猛发展,电子商务已成为现代商业的重要组成部分。许多人纷纷涉足网店经营,希望通过线上渠道实现创业梦想。然而,“现在开网店能赚钱吗?”这个问题的答案并不是绝对的,而是取决于多种因素。 网络市场的低门槛和广…

JWT登录验证前后端设计与实现笔记

设计内容 前端 配置全局前置路由守卫axios拦截器登录页面和主页 后端 JWT的封装登录接口中间件放行mysql数据库的连接 详细设计 路由设计 配置全局前置守卫,如果访问的是登录页面则放行,不是则进入判断是否有token,没有则拦截回到登录…

一连三部电影撤出春节档,给行业带来什么启示?

继《我们一起摇太阳》后,《红毯先生》于2月16日晚也宣布退出今年春节档。 至此,加上动画电影《黄貔:天降财神猫》,2024年春节档已有三部影片撤档,在春节档历届过往中实属少见。 其中,《红毯先生》、《我们…

安装配置NMon

NMon(Nigel’s Monitor)是一款由IBM公司提供的免费性能监控工具,专门用于监控AIX系统和Linux系统的资源使用情况 下载软件 wget http://sourceforge.net/projects/nmon/files/nmon16p_binaries.tar.gz 如果报错的话,安装提示添加…

论文阅读_用模型模拟记忆过程

英文名称: A generative model of memory construction and consolidation 中文名称: 记忆构建和巩固的生成模型 文章: https://www.nature.com/articles/s41562-023-01799-z 代码: https://github.com/ellie-as/generative-memory 作者: Eleanor Spens, Neil Burgess&#xff…

Python算法100例-1.7 最佳存款方案

完整源代码项目地址,关注博主私信’源代码’后可获取 1.问题描述2.问题分析3.算法设计4.完整的程序 1.问题描述 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后5年中的每年年底取出1000元,到第5年时刚…

matlab代码--基于stbc编码的MIMO-OFDM系统的误码率分析

1 前言 空时分组编码STBC(Space Time Block Coding)用在无线通信中传输一个数据流的多个拷贝。通过许多天线来产生数据的多种接收版本,提高数据传输的可靠性。接收机接收到的数据拷贝中,存在一些比其它拷贝“更好”的拷贝。而这种…

04 SS之JWT和base64

1.1 jwt和token 1.1.1 token介绍 令牌(Token):在计算机领域,令牌是一种代表某种访问权限或身份认证信息的令牌。它可以是一串随机生成的字符或数字,用于验证用户的身份或授权用户对特定资源的访问。普通的令牌可能以…

【动态规划】【C++算法】2742. 给墙壁刷油漆

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCode2742. 给墙壁刷油漆 给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有…

多行重定向,expect,字符串处理,高级变量,脚本工具

一,多行重定向 (一)含义 使用I/O重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 Here Document 是标准输 入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出…

Unity类银河恶魔城学习记录7-6 P72 Bouncy sword源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill_Controller.cs using System.Collections; using System.Colle…

Github 2024-02-18 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-02-18统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5PowerShell项目1Rust项目1PHP项目1Jupyter Notebook项目1TypeScript项目1 Black:不妥…