当前位置: 首页 > news >正文

python正则通配符_通配符、正则表达式、python去重

1.linux通配符

*:代表所有字符(0到多个);

?:代表一个字符;

;:连续不同命令之间的分隔符;

#:配置文件注释;

|:管道;

~:当前用户的家目录;

-:上一次所在的路径;

$:变量前面需要加的符号;

/:路径分隔符;

>或1>:重定向,会覆盖原有数据;

>>:追加重定向;

<:>

<<:>

':单引号,不具有命令置换功能,输出时所见即所得;

":双引号,具有变量置换功能,解析变量后才输出.不加引号相当于双引号;

`:反引号,两个``中间为命令,会先执行,等价于$();

{}:命令区块组合或内容序列,echo stu{1..5};cp a.txt {,.bak};

!:逻辑运算中的非(not);

&&:and并且,前一个命令执行成功时,才执行后一个命令;

||:or或,前一个命令执行失败时,执行后一个命令;

.:当前目录;

..:上一级目录;

2.正则表达式:为处理大量字符串而定义的一套规则和方法

a.基础正则第一波:

# 匹配以m开头的字符,因为是贪婪模式,所以匹配到整行

grep "^m" oldboy.txt

# 匹配以m结尾的字符

grep "m$" oldboy.txt

# 匹配空行并显示行号

grep -n "^$" oldboy.txt

# 排除空行

grep -vn "^$" oldboy.txt

# 只输出匹配到的m字符

grep -no "m" oldboy.txt

.:代表且只能代表任意一个字符;

*:重复0个或多个前面的一个字符,例如:my*,0个y,会匹配有m字符的字符串;1个y,my;多个y,myyy;

:转义,让有特殊意义的字符,只代表字符本身;

.*:匹配任意长度的任意字符.

b.基础正则第二波:

grep -no [abc] oldboy.txt 匹配集合内的任意一个字符

grep -no [^abc] oldboy.txt 不匹配集合内的字符

a{n,m} 前一个字符,重复n到m次

a{n,} 重复至少n次

a{n} 重复n次

a{,m} 最多重复m次

# -w参数是按单词搜索,只匹配有这个单词的行

grep -w "oldboy" oldboy.txt

# grep -E 不用再加转义符,egrep、sed -r是同样的道理--支持扩展正则

# -i、-v为常用参数、-o(用于统计出现在文中的次数)

c.通配符和正则表达式比较:

通配符多用在文件上,比如find、ls、cp等;正则表达式多用于文本过滤,比如grep、awk、sed等;

*在通配符中表示匹配任意的0个或多个字符;在正则表达式中是重复之前的一个或者多个字符,不能独立使用.

3.python去重的几种方法:

>>> lst1 = [2, 1, 3, 4, 1]

>>> lst2 = list(set(lst1))

>>> print(lst2)

[1, 2, 3, 4]

二、常规方法

>>> lst1 = [2, 1, 3, 4, 1]

>>> temp = []

>>> for item in lst1:

if not item in temp:

temp.append(item)

>>> print(temp)

[2, 1, 3, 4]

三、列表推导

>>> lst1 = [2, 1, 3, 4, 1]

>>> temp = []

>>> [temp.append(i) for i in lst1 if not i in temp]

[None, None, None, None]

>>> print(temp)

[2, 1, 3, 4]

>>> data = [2, 1, 3, 4, 1]

>>> [item for item in data if data.count(item) == 1]

[2, 3, 4]

四、sort、sorted

>>> lst1 = [2, 1, 3, 4, 1]

>>> lst2.sort(key=lst1.index)

>>> lst2 = sorted(set(lst1), key=lst1.index)

个人觉得第一种和第三种方法比较好理解

sort与sorted区别:

sort 是应用在list上的方法,sorted 可以对所有可迭代的对象进行排序操作.list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作.

通过指定列表中的元素进行排序:

>>> random = [(2, 2), (3, 4), (4, 1), (1, 3)]

>>> random.sort(key=lambda s:s[1])

>>> print(random)

[(4, 1), (2, 2), (1, 3), (3, 4)]

sorted的使用方法:

>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

# 按年龄降序排序

>>> sorted(students, key=lambda s: s[2], reverse=True)

[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入研究Windows内部原理系列(视频)(微软制造)
  • root命令连接mysql_通过更改root密码实现连接MySQL及常用命令
  • 关于Component Business Model和DDD关系的探究结论
  • 查看mysql的ibdata1_mysql 里的 ibdata1 文件
  • 电子信息系统常识介绍--上位机和下位机
  • mysql 字符集测试_Windows下MySQL的my.ini文件字符集测试(二)
  • gOS Google的OS来了?(图)
  • 因特网MySQL服务器_因特网服务器的主要功能
  • Java程序员:一刻钟精通正则表达式
  • mysql 汉字转首字母_MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)...
  • WiMax与IEEE 802.16组网技术分析(组图)
  • python importerror_Python–ImportError:无法导入名称X
  • 悉数僵尸网络:知己知彼 百战不殆
  • 华为私有云的搭建方案_华为私有云解决方案
  • java 冒泡_Java中的冒泡排序
  • 【笔记】你不知道的JS读书笔记——Promise
  • Angular 响应式表单 基础例子
  • Bytom交易说明(账户管理模式)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • ERLANG 网工修炼笔记 ---- UDP
  • exports和module.exports
  • Go 语言编译器的 //go: 详解
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Object.assign方法不能实现深复制
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • ubuntu 下nginx安装 并支持https协议
  • Vue小说阅读器(仿追书神器)
  • 分布式任务队列Celery
  • 机器学习学习笔记一
  • 聚类分析——Kmeans
  • 设计模式走一遍---观察者模式
  • 源码安装memcached和php memcache扩展
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​渐进式Web应用PWA的未来
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #微信小程序(布局、渲染层基础知识)
  • (10)ATF MMU转换表
  • (2022 CVPR) Unbiased Teacher v2
  • (7)svelte 教程: Props(属性)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)二分查找 超详细
  • (java)关于Thread的挂起和恢复
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (SpringBoot)第二章:Spring创建和使用
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (黑马点评)二、短信登录功能实现
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)德国人的记事本
  • (转)用.Net的File控件上传文件的解决方案
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .apk文件,IIS不支持下载解决