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

检查字符串中的各种(不同)模式
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

复制
相关文章
1.特征点检测与匹配
三维模型重建的流程: 三维点云获取——几何结构恢复——场景绘制 三维点云获取: 1.激光雷达 2.微软Kinect 有效距离比较短 3.单目多视角 :几乎很难实时 4.双目立体视觉
小飞侠xp
2019/01/02
2.1K0
TensorFlow报错ValueError: Variable layer1-conv1/weight already exists,
一个程序中有tf.variable_scope()函数,第一次运行报错之后,第二次修改bug再次运行会报如下错误:
嵌入式视觉
2022/09/05
6200
TensorFlow报错ValueError: Variable layer1-conv1/weight already exists,
pytorch训练的维度不匹配的问题,解决办法
扩展单张图片维度 import cv2 import torch image = cv2.imread(img_path) image = torch.tensor(image) print(image.size()) img = image.view(1,
AI拉呱
2021/03/03
2.2K0
输入技巧1
在不知道需要输入多少个数,每个数之间有个空格,当输入换行时结束,如何进行读入操作。
Lokinli
2023/03/09
1230
求s=1+1(1+2)+1(1+2+3)
求s=1+1/(1+2)+1/(1+2+3)….+1/(1+2+3….+n)的值 #include <stdio.h> float fun(int n) { int i,s1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /求每一项的分母/ s=s+1.0/s1; /求多项式的值/ } return s; } void main() { int n; float s; void NONO ( ); printf("\nPlease enter N:"); scanf("%d", &n); s = fun(n); printf("the result is: %f\n", s); NONO(); } void NONO ( ) {/ 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 / FILE fp, wf ; int i, n ; float s;
py3study
2020/01/07
6830
[阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念
本文基于阿里推荐 DIN 和 DIEN 代码,梳理了下深度学习一些概念,以及TensorFlow中的相关实现。
罗西的思考
2020/11/11
1.8K0
不同维度矩阵相乘[通俗易懂]
在深度学习中经常会遇到不同维度的矩阵相乘的情况,本文会通过一些例子来展示不同维度矩阵乘法的过程。
全栈程序员站长
2022/11/15
8K0
不同维度矩阵相乘[通俗易懂]
php 循环 计算1+1+2+1+2
方法一: for 循环 function add($n,$sum=0){     for($i = 1;$i<=$n;$i++){ for($j = 1;$j<=$i;$j++){ $sum+=$j;     } }     echo $sum; } add(100,0); 方法二:回调函数 function getSum($n) {     if ($n > 1) {  $tempSum = $n * (1 + $n) / 2;            return $tempSum + getSum
py3study
2020/01/07
1K0
TensorFlow从0到1 - 2 - TensorFlow核心编程
上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与TensorFlow核心(Core)相对的是T
袁承兴
2018/04/11
8160
TensorFlow从0到1 - 2 - TensorFlow核心编程
Wafer1 和 Wafer2 有什么不同?
Jason
2017/12/19
12.2K10
Wafer1 和 Wafer2 有什么不同?
sed与awk处理区间匹配的问题总结---1
正常情况下,将要处理的行读入pattern space(缓存的一种),然后在pattern space中进行处理,然后再将pattern space中的内容取回, 进行输出. 我们需要处理的行,很多情况下是用"pattern"匹配出来的。如果我们需要处理匹配行的前一行或者后一行有什么办法呢? 这时候可以用sed 的n 命令和 b命令: “n” 命令表示:将当前行的下一行读入到pattern space, 从而提换掉了当前行的内容. “b”命令表示:这是一个跳转指令,表示跳转到指定的lable, 如果lable 没有指定,那么直接跳转到命令的结束,也就是没有命令需要执行. 看如下例子的讲解:
qsjs
2020/06/09
1.2K0
Ansible 2 -- 1安装与配置
ansible 的安装有很多方式,这里以Mac为例 安装 brew install ansible 他会顺便安装依赖python3 打 ansible --version ➜ ansible --version ansible 2.7.1 config file = /Users/mafei/.ansible.cfg configured module search path = ['/Users/mafei/.ansible/plugins/modules', '/usr/share/ans
mafeifan
2019/07/15
5050
《Redis核心技术与实战》学习总结(1)
作为Key/Value键值数据库,Redis的应用非常广泛。在之前多年的工作生涯中,我也只是关注了零散的技术点,没有对Redis建立起一套整体观,但只有建立了系统整体观,才能更好地定位问题和解决问题,更重要的是应付面试。
Edison Zhou
2022/03/11
5211
《Redis核心技术与实战》学习总结(1)
spring boot框架学习2-spring boot核心(1)
1:解析spring boot入口和@SpringBootApplication源码详解
凯哥Java
2019/07/01
4830
TensorFlow2.X学习笔记(1)--TensorFlow核心概念
TensorFlow™ 是一个采用 数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
MiChong
2020/09/24
9640
Numpy与矩阵
请注意,本文编写于 980 天前,最后修改于 980 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.4K0
Numpy与矩阵
1_输入与输出_javascript_脑图系列
photoshop,es5,es6,html,css,sass,git,webpack,vue,react
舒克
2021/12/31
2870
1_输入与输出_javascript_脑图系列
Java操作数据库Spring(1)
首先是核心配置文件daoContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfram
Java帮帮
2018/03/16
7310
JavaWeb核心篇(1)——HTTP/Tomcat/Servlet
如果说网页是为了展现数据,数据库是为了存储和管理数据,那么JavaWeb就是为了进行逻辑处理
秋落雨微凉
2022/10/25
6720
JavaWeb核心篇(1)——HTTP/Tomcat/Servlet
点击加载更多

相似问题

ValueError: matmul:输入操作数1在其核心维度0中不匹配

10

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%2与%1不同)

120

列向量乘法出错ValueError: matmul:输入操作数1在其核心维度0中不匹配

21.3K

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%1与%3不同)

2957

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(尺寸13与尺寸2不同)

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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