Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >检查字符串中的各种(不同)模式

检查字符串中的各种(不同)模式
EN

Stack Overflow用户
提问于 2021-01-08 11:24:50
回答 1查看 28关注 0票数 0

我有一个函数,它将执行各种正则表达式匹配,以找出哪个信使属于所提供的tracking id。

现在,我正在使用许多elif语句,这些语句工作得很好,但我感觉这在维护方面并不是很容易扩展。

代码语言:javascript
运行
AI代码解释
复制
import re


def get_courier(tracking_id):
    """ Retrieves the courier from a given tracking-id """

    if re.match(r'^ABC\d*$', f'{tracking_id}'):
        courier = "Courier 1"
    elif re.match(r'^\d*-\d$', f'{tracking_id}'):
        courier = "Courier 2"
    elif re.match(r'^PREF\d*$', f'{tracking_id}'):
        courier = "Courier 3"
    # ...
    else:
        courier = None

    return courier

是否有可能将模式“外包”到一个文件或数据库中,我可以在其中定义模式及其相关信使?

我想不出一个像这样的解决方案。

代码语言:javascript
运行
AI代码解释
复制
import re


def get_courier(tracking_id):
    """ Retrieves the courier from a given tracking-id """

    patterns = database_select_function()

    courier = re.match(patterns, tracking_id)

    return courier
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-08 11:37:09

下面是python中的regex模式匹配的一个简单的更好的解决方案:

代码语言:javascript
运行
AI代码解释
复制
import re

courier_patterns={r'^ABC\d*$': 'Courier 1',
                  r'^\d*-\d$': 'Courier 2',
                  r'^PREF\d*$': 'Courier 3'}

def get_courier(tracking_id):
    """ Retrieves the courier from a given tracking-id """

    courier=None

    for pattern, courier_name in courier_patterns.items():
        if re.match(pattern):
            courier=courier_name
            break

    return courier

正如您所看到的,我并不是从文件或DB加载快递模式,但是适应这个解决方案很简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65628089

复制
相关文章
Dart 中的生产模式和检查模式
注: Dart 1.x有生产模式和检查模式两种运行模式, Dart 2中移除了检查模式。
莫斯
2020/09/10
1.5K0
漫谈 C++ 的各种检查
以下文章来源于BOTManJL ,作者BOT Man What you don't use you don't pay for. (zero-overhead principle)      —— Bjarne Stroustrup 背景阅读 在学习了 Chromium/base 库(笔记)后,我体会到了一般人和 优秀工程师 的差距 —— 拥有较高的个人素质固然重要,但更重要的是能 降低开发门槛,让其他人更快的融入团队,一起协作(尤其像 Chromium 开源项目 由社区维护,开发者水平参差不齐)。
腾讯技术工程官方号
2019/10/15
2.6K0
漫谈 C++ 的各种检查
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
沙漠尽头的狼
2021/12/01
5420
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
JusterZhu
2022/12/07
4740
Java单例模式中双重检查锁的问题
单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。
全栈程序员站长
2022/09/15
1.9K0
JAVA中各种单例模式的实现与分析
单例模式是学习设计模式过程中最基本的一个设计模式,基本上一开始学习就会学到单例模式,实际上在java中实现单例模式有很多种写法,不同写法也会导致不同的问题。 那么究竟哪些写法能用,而哪些写法不能用,或者不同实现方法在什么场景下能使用。本文对现有的9种单例模式的实现方式进行分析。
冬天里的懒猫
2021/09/06
4050
统计字符串中不同字符个数问题
经过一段时间对python的学习,已经能够相对熟练的编写函数和使用python循环语句及if条件语句,通过这三种知识的结合,可以轻松统计出一段字符串里不同字符的个数。
算法与编程之美
2022/05/23
7740
在 Shell 脚本中执行语法检查调试模式
写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作。
小小工匠
2021/08/16
2K0
shell检查语法模式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160330.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
9850
shell检查语法模式
策略模式不同,代码实现不同
好了,这个时候再来看我们的代码,好像越来越复杂了,虽然用策略模式将具体的算法都抽离出来了,但是 if-else 的问题还是没有解决啊
艳艳代码杂货店
2021/09/26
4640
如何检查Python下的各种模块是否安装好
在终端安装完后一个模块后基本都会输出“Successfully installed xxx”之类的文本来告知用户安装成功,如果还不放心,可以输入python进入python代码使用两种方式来确定是否安装成功。
Cloudox
2021/11/23
2.3K0
如何检查Python下的各种模块是否安装好
单例模式的各种实现
单例模式的主要优点如下: (1)    单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严 格控制客户怎样以及何时访问它。 (2)    由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销 毁的对象单例模式无疑可以提高系统的性能。 (3)    允许可变数目的实例。基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获 得指定个数的对象实例,既节省系统资源,又解决了单例单例对象共享过多有损性能的问 题。 2.主要缺点 单例模式的主
小小明童鞋
2018/06/13
7300
检查 Python 中给定字符串是否仅包含字母的方法
Python被世界各地的程序员用于不同的目的,如Web开发,数据科学,机器学习,并通过自动化执行各种不同的过程。在本文中,我们将了解检查python中给定字符串是否仅包含字符的不同方法。
很酷的站长
2023/08/11
5090
检查 Python 中给定字符串是否仅包含字母的方法
Java中的replaceAll()方法同时替换多个不同的字符串
需求场景 场景一 String str1 = "广东省,福建省,北京市,海淀区,河北省,上海市,...."; 需要把“省”、“市”、“区”一起去掉; 变成: 广东,福建,北京,海淀,河北,上海....
崔笑颜
2020/06/08
12K0
LVS 各种模式分析
腾讯云TStack
2017/10/23
3K0
java中==、equals的不同AND在js中==、===的不同
       1.==操作符:首先,对于非基本数据类型的对象比较,相同内存中存储的变量的值是否相等,注意是相同内存地址的才可,并且数值相同(当然地址相同,值也一定相同)才会返回true.     但是,对于基本数据类型的比较(比如:int flot double等),值相同,"=="比较便会返回true.(这是编译的规则,当进行基本数据类型的比较时,会编译生成if_icmpne指令不会进行比较地址。而进行对象比较时,会生成if_icmpne指令,会比较地址。生成的指令都是不同的)。
洋仔聊编程
2019/01/15
4.3K0
如何在Flutter和Dart中检查数字字符串
要检查字符串是否为数字字符串,可以使用double.tryParse()方法。如果返回值等于null,则输入不是数字字符串,否则是。
徐建国
2021/09/08
3.6K0
Java 中检查空字符串(null或空白)的方法有几种?
来源:https://www.toutiao.com/i6713087515768652301
JavaFish
2019/10/16
12.7K0
详解shell语法检查模式
在进入本指导的重点之前,让我们简要地探索下 verbose 模式。它可以用 -v 调试选项来启用,它会告诉 shell 在读取时显示每行。要展示这个如何工作,下面是一个示例脚本来批量将 PNG 图片转换成 JPG 格式。
全栈程序员站长
2022/09/14
8610
点击加载更多

相似问题

emacs中各种拼写检查模式的优缺点

12

JavaScript中各种参数的处理模式

10

匹配各种模式的Regex

16

查询各种寻址模式?

10

当raws之间有不同的值时,如何识别Pandas dataframes中行中的各种字符串模式

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档