python 使用python正则表达式提取字符串 匹配“非长字符串”

前些天用到了list的sort方法sort方法的对於字符串的默认排序是按英文字母的顺序来排序的,可是那并不是我想要的结果我想按字符串的长度来对list排序,这时就需要用到sort方法的參数

我用的是key,通过制定key就可以对字符串进行排序了哈哈。当然也有其他方法以后发现了在发到博客了,即使很少有人看我的博客

看看,解决了用到了lambda函数,每次看到lambda都要google这次干脆贴到博客里,查起来容易多了

lambda会创建一个函数对象,但不会把这个函数对象赋給一个标识符而def则不同,它在创建函数对象的同时会进行这种操作这是lambda的第一个特点。lambda的第二个特点是它只是一个表达式,而不是┅个语句如果单独使它成为了一个语句,比如:

如果你在你的python程序中写下了这么一行那么毫无意义,这一行代码会创建一个函数对象但马上又给丢弃了,因为你没有使用它的返回值即那个函数对象。也正是由于lambda只是一个表达式它可以直接作为list或dictionary的成员,比如:

在這个地方没有办法用def语句直接代替第三,lambda表达式在“:”后只能有一个表达式也就是说,在def中可以放在return后的也可以放在lambda,不能放在return後也不能放在这里更本质地说,后面的表达式是能够返回一个值的不能返回值的不能放在这里。因此像if或for或print这种语句就不能用于lambda中,lambda一般只用来定义简单的函数当然,通过一些技巧可以在lambda中实现与if或for相同的功能。比如:if语句可以利用and和or这两个逻辑操作符的“短路”特性来模拟比如:

这样的话,如果test为真那么就会计算[x],当然得到的就是[x]由于在or操作符的左边已经得到真值,or的右边就不会被计算因此得到的是[x][0],最后的结果是x如果test为假,那么根据and的特性左边已经为假,右边不会被计算这时or的左边为假那么就得到[y][0],最后的结果是y注意在这里不能写成如下的形式:

在x为真值时,这种形式与上面这种形式是等价的但设想这种情况,“如果test为真则取0,如果test为假,则取[]”也就是说x本身是一个假值,用上面的形式书写就是:

显然不能达到目的这个式子永远只会取到[]。因此应该改写成:

在lambda中循环語句也是可以模拟的用的是map函数。比如:

当然这种东西看起来就很复杂,如果可能最好不要嵌套使用lambdaprint也是可以模拟的:

在我们日常使用中经常需要搜索关键位置进行字符串的匹配,比如一行文本的开头又比如一个字符串的开头,或者结尾 这时候就需要使用python正则表达式提取字符串的邊界符进行匹配,它们定义如下:

^ 字符串的开头或一行的开头

$ 字符串的结尾或一行的结尾

\b 空字符串的开头或一个单词的结尾

\B 非空字符串的開头或非一个单词的结尾与\b相反

在我们日常使用中经常需要搜索关键位置进行字符串的匹配,比如一行文本的开头又比如一个字符串的开头,或者结尾 这时候就需要使用python正则表达式提取字符串的邊界符进行匹配,它们定义如下:

^ 字符串的开头或一行的开头

$ 字符串的结尾或一行的结尾

\b 空字符串的开头或一个单词的结尾

\B 非空字符串的開头或非一个单词的结尾与\b相反

我要回帖

更多关于 python正则表达式提取字符串 的文章

 

随机推荐