前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3 cookbook

python3 cookbook

作者头像
py3study
发布2020-01-06 11:54:54
3750
发布2020-01-06 11:54:54
举报
文章被收录于专栏:python3

使用deque(maxlen=N)构造函数会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会被移除掉.在队列两端插入或者删除元素时间复杂度都是O(1), 而在列表的开头插入或删除元素的时间复杂度为O(N).

当要查找的元素个数相对比较小的时候,函数 nlargest() 和 nsmallest() 是很合适的。 如果你仅仅想查找唯一的最小或最大(N=1)的元素的话,那么使用 min() 和 max() 函数会更快些。 类似的,如果N的大小和集合大小接近的时候,通常先排序这个集合然后再使用切片操作会更快点 (sorted(items)[:N] 或者是 sorted(items)[-N:] )。 需要在正确场合使用函数 nlargest() 和nsmallest() 才能发挥它们的优势 (如果N快接近集合大小了,那么使用排序操作会更好些)

2. 字符串和文本

re.split(r'[;,\s]\s*]', line)

re.split(r'(;|,|\s)\s*', line)     

re.split(r'(?:,|;|\s)\s*', line)

[name for name in filenames if name.endswith(('.c', '.h'))]

re.match('http:|https:|ftp:', url)  # match() 方法仅仅检查字符串的开始部分。

from fnmatch import fnmatch, fnmatchcase

fnmatch('foo.txt', '*.txt')

如果你的代码需要做文件名的匹配,最好使用 glob 模块。

如果你想使用同一个模式去做多次匹配,你应该先将模式字符串预编译为模式对象。

datepat.findall(text)

datepat.finditer(text)

如果你打算做大量的匹配和搜索操作的话,最好先编译正则表达式,然后再重复使用它。 模块级别的函数会将最近编译过的模式缓存起来,因此并不会消耗太多的性能, 但是如果使用预编译模式的话,你将会减少查找和一些额外的处理损耗。

text.replace('yeah', 'yep')

re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)

datepat.sub(r'\3-\1-\2', text)

对于更加复杂的替换,可以传递一个替换回调函数来代替.一个替换回调函数的参数是一个 match 对象,也就是 match() 或者 find() 返回的对象。 使用group() 方法来提取特定的匹配部分。回调函数最后返回替换字符串。

def change_date(m):

代码语言:javascript
复制
    mon_name = month_abbr[(m.group())]
    .format(m.group(), mon_name, m.group())
(datepat.sub(change_date, text))

newtext, n = datepat.subn(r'\3-\1-\2', text)

代码语言:javascript
复制
def matchcase(word):
    def replace(m):
        text = m.group()
        if text.isupper():
            return word.upper()
        elif text.islower():
            return word.lower()
        elif text[0].isupper():
            return word.capitalize()
        else:
            return word
    return replace
代码语言:javascript
复制
re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)

在一个模式字符串中,点(.)匹配除了换行外的任何字符。通过在 * 或者 + 这样的操作符后面添加一个 ? 可以强制匹配算法改成寻找最短的可能匹配。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档