热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用正则表达式避免如果省略号

我是Python的新手,我正在用它进行一个难看的将表数据转换成db的小转换.该程序查看数据,在MySQL中创建一个表,然后将数据读入表中.在本节中,将检查标题行文本以对数据类型做出

我是Python的新手,我正在用它进行一个难看的将表数据转换成db的小转换.该程序查看数据,在MySQL中创建一个表,然后将数据读入表中.在本节中,将检查标题行文本以对数据类型做出一些决定.我有个主意,我可以很聪明,并使用一个正则表达式而不是if / elifs.我的解决方案至少适用于这种情况,在这里我不必担心多个匹配项.我要问的是,这种方法在效率方面是否有真正的优点?

def _typeMe(self, header_txt):
# data typing
colspecs = {
'id':'SMALLINT(10)',
'date':'DATE',
'comments':'TEXT(4000)',
'flag':'BIT(1)',
'def':'VARCHAR(255)'
}
# regex to match on header text e.g. 'Provisioner ID'
r = re.search(re.compile('(ID$)|(Date)|(Comments$)|(FLAG$)', re.IGNORECASE), header_txt)
checktype = lambda m: max(m.groups()).lower() if m else 'def'
return colspecs[checktype(r)]

解决方法:

我同意@ecatmur的回答;我只想发布一些轻微的代码建议,这些建议太长了,无法发表评论.

无需执行re.search(re.compile(‘…’,re.IGNORECASE),header_text).相反,您可以直接将字符串作为re.search(‘…’,header_text,re.IGNORECASE)传入.如果您一遍又一遍地使用相同的正则表达式,则re.compile会更快,但如果您不使用re.search和朋友,它将为您调用它.

尽管我不同意Colin对命名为lambda的不屑(这很方便,因为它们仍然是一行而不是两行),但您根本不需要在这里使用内部函数:

return colspecs[max(m.groups()).lower() if m else 'def']

如果您只创建一个捕获组而不是四个捕获组,则也不需要max(m.groups())技巧:'(ID | Date | Comments | Flag)$’.然后,您可以执行m.group(1).


推荐阅读
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • 深入解析RDMA中的队列对(Queue Pair)
    本文将详细探讨RDMA架构中的关键组件——队列对(Queue Pair,简称QP),包括其基本概念、硬件与软件实现、QPC的作用、QPN的分配机制以及用户接口和状态机。通过这些内容,读者可以更全面地理解QP在RDMA通信中的重要性和工作原理。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • MySQL DATETIME 类型长度及使用指南
    本文详细介绍了 MySQL 中 DATETIME 类型的长度要求及其格式规范,并补充了其他常见数据类型的说明,帮助开发者更好地理解和使用这些类型。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
author-avatar
捕鱼达人2602881157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有