python通配符 任意一段字符_通配符、正则表达式、python去重

本文深入讲解了Linux中常用的通配符和正则表达式的用法,包括文件操作、文本过滤等方面,并举例说明了各种匹配和重定向功能。此外,还介绍了Python中去除列表重复元素的三种方法,包括利用set、循环判断以及列表推导式。这些技巧对于日常的文本处理和编程工作非常实用。
摘要由CSDN通过智能技术生成

1.linux通配符

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

?:代表一个字符;

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

#:配置文件注释;

|:管道;

~:当前用户的家目录;

-:上一次所在的路径;

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

/:路径分隔符;

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

>>:追加重定向;

<:输入重定向(xargs、tr);

<<:追加输入重定向(cat);

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

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

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

{}:命令区块组合或内容序列,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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值