文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python3 cookbook

2023-01-31 08:17

关注

使用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):

    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)


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


re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯