Python学习日志_0707

本文介绍了正则表达式的使用,包括[^,]匹配非逗号字符,*匹配任意数量的字符,以及在Python中的应用,如split()函数、capitalize()方法、join()函数和切片操作。还讨论了for循环和if...else...的嵌套用法,以及while循环在字符串替换中的作用。同时,文章展示了如何使用正则表达式进行非贪婪匹配和替换,并给出了几个经典的正则表达式实战案例,如压缩重复行和改变方法参数顺序。

使用\(和\)符号括起正则表达式,即可在后面使用\1、\2等变量来访问\(和\)中的内容。

[^,]表示非","的任意字符

*匹配0或任意个

// 向下整除

abs() 绝对值

split()函数 在没有参数的情况下,函数默认会以空格、回车符、空格符等作为分割条件

capitalize() 首字母大写,其余字母小写

" ".join 以" "中间的字符连接join 后面的字符

[::-1] 将数字或字符倒序输出

range(5)等价于range(0,5)

zfill() 返回指定长度的字符串,原字符串右对齐,前面填充0

x for x in arr if ... else ...

和 x if ... else ... for x in arr

是不一样的

e.g. sort the odd

def sort_array(arr):

        odds = sort((x for x in arr if x % 2 != 0),reverse = True)

        return [x if x % 2 == 0 else odds.pop() for x in arr]

上例中,for循环放在最后可生效,如果for放在前面,那么for ... if ... 为一段,后面的else不产生循环

以后有for如果接的不止一个if还有else的,需要注意for放在最后

while "{}" in s or "()" in s or "[]" in s:

        s = s.replace("{}","")

        s = s.replace("()","")

        s = s.replace("[]","")

return s == ""

此处的while语句如果删掉,直接替换就会报错。因为要多次执行replace而不是一次。询问一下,更复合逻辑。

shift+~ 改大小写

... | tee ... 写入后面的文件中

python字典in操作符用于判断键是否存在于字典中,如果键在字典中返回True,否则返回False。而not in 操作符刚好相反,如果键在字典中返回False。

list() 方法用于将元组转换成列表

原始字符串(raw string)是所有的字符串都按照字面的意思来使用,如: print(r"\blake")

\blake

findall总返回一个列表,如果没有找到则返回空:

reObj1.findall(s)

或者 findall(r"[:;][-~]?[)D]"," ".join(arr))

?为非贪婪匹配

colou?r ?问号代表前面的字符最多只出现一次(0次或1次)

另外:

+ 匹配1次或多次,为贪婪匹配

* 匹配0次或1次或多次

经典案例:

案例一:

重复的2行并成一行:

:%s/^\(.*\)\n\1$/\1/g

案例二:

重复多行压缩成1行:

:%s/^\(.*\)\(\n\1\)\+$/\1/g

案例三:

将所有方法foo(a,b,c)的实例改为foo(b,a,c)

e.g foo(bar(8),x+y+z,5) -> foo(x+y+z,bar(8),5)

:%s/foo(\([^,]*\),\([^,]*\),\([^,]*\))/foo(\2,\1,\3)/g

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值