首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从字符串中提取复杂的数字范围?

从字符串中提取复杂的数字范围可以通过以下步骤实现:

  1. 首先,使用正则表达式匹配字符串中的数字。可以使用正则表达式模式\d+来匹配一个或多个数字。
  2. 将匹配到的数字保存到一个列表中。
  3. 对列表中的数字进行排序,以确保范围的正确性。
  4. 遍历排序后的数字列表,找到连续的数字序列。如果当前数字与下一个数字相差为1,则将它们视为连续的数字。
  5. 根据连续数字序列的起始数字和结束数字,构建数字范围表示。可以使用字符串格式化来生成范围表示,例如"start-end"。

下面是一个示例代码,演示如何从字符串中提取复杂的数字范围:

代码语言:txt
复制
import re

def extract_number_range(string):
    # 使用正则表达式匹配字符串中的数字
    numbers = re.findall(r'\d+', string)
    
    # 将匹配到的数字转换为整数并排序
    numbers = sorted(map(int, numbers))
    
    ranges = []
    start = end = numbers[0]
    
    # 遍历排序后的数字列表,找到连续的数字序列
    for i in range(1, len(numbers)):
        if numbers[i] - numbers[i-1] == 1:
            end = numbers[i]
        else:
            # 构建数字范围表示
            if start == end:
                ranges.append(str(start))
            else:
                ranges.append(f"{start}-{end}")
            start = end = numbers[i]
    
    # 处理最后一个数字范围
    if start == end:
        ranges.append(str(start))
    else:
        ranges.append(f"{start}-{end}")
    
    return ranges

# 示例用法
string = "abc123def456ghi789jkl"
ranges = extract_number_range(string)
print(ranges)

输出结果为:

代码语言:txt
复制
['123-456', '789']

这个示例代码可以从字符串中提取出复杂的数字范围,并将范围表示以列表形式返回。对于输入字符串"abc123def456ghi789jkl",输出结果为['123-456', '789']。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python字符串提取数字

大家好,又见面了,我是你们朋友全栈君。 1、使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串开始。 ## $ 匹配字符串结尾。 ## \b 匹配一个单词边界。...## \d 匹配任意数字。 ## \D 匹配任意非数字字符。 ## x? 匹配一个可选 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。 ## x* 匹配0次或者多次 x 字符。...## 正则表达式点号通常意味着 “匹配任意单字符” 2、解题思路: 既然是提取数字,那么数字形式一般是:整数,小数,整数加小数; 所以一般是形如:—-.—–; 根据上述正则表达式含义...\d*”; \d+ 匹配1次或者多次数字,注意这里不要写成*,因为即便是小数,小数点之前也得有一个数字; \.?...这个是匹配小数点,可能有,也可能没有; \d* 这个是匹配小数点之后数字,所以是0个或者多个; 3、代码如下: # -*- coding: cp936 -*- import re string

3.3K20
  • python提取字符串数字「建议收藏」

    一、isdigit()函数 isdigit()函数是检测输入字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。...该接收两个参数,第一个为函数,第二个为序列,序列每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 元素放到新列表。...语法: filter(function, iterable) 1、过滤出列表所有奇数: def is_odd(n): return n % 2 == 1 tmplist = filter...(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) newlist = list(tmplist) print(newlist) 2、过滤出列表所有偶数: l = [...ftr = filter(_not_divisible(n), ftr ) #3 for n in primes(): if n < 100: print('now:',n) else: break 三、提取一段字符串数字

    3.9K20

    Excel公式技巧10: 字符串提取数字——数字位于字符串开头

    本文主要研究字符串开头提取数字技术: 1. 这些数字是连续 2. 这些连续数字位于字符串开头 3....想要结果是将这些连续数字返回到单个单元格 对于下面研究每种解决方案,我们需要在两种不同情况下测试其健全性: 1. 字符串除开头外其他地方没有数字情况,例如123ABC。 2....这就是在开始给lookup_vector(通过创建一个由负数、零(如果期望提取字符串以0开头例如0123ABC)或错误值组成数组)值添加负号原因,可以确保lookup_value为1永远是一个充分而合法选择...原因是字符串末尾有其他数字,因此COUNT函数统计数字个数大于字符串开头数字个数,这样LEFT取值仍是字母数字混合字符串。...MATCH/ISNUMBER组合确保字符串除开头以外数字不会影响最终结果。

    3.1K20

    Excel公式技巧11: 字符串提取数字——数字位于字符串末尾

    上篇文章讲解了提取位于字符串开头数字公式技术,本文研究字符串开头提取数字技术: 1. 这些数字是连续 2. 这些连续数字位于字符串末尾 3....也就是说,如果该参数值将导致全部或部分返回值超出字符串末尾情况时,则这些函数仅返回指定位置到字符串末尾那些字符。...LOOKUP与RIGHT 公式2: =-LOOKUP(0,-RIGHT(A1,ROW(INDIRECT("1:"& LEN(A1))))) 这个公式与上一篇文章《Excel公式技巧10:字符串提取数字...456 下面,我们来看看字符串除末尾以外数字会不会影响最终结果。...表示在字符串“”第一个非数字字符自右向左出现位置,减1表示数字字符出现位置: =0+RIGHT("ABC456",3) 结果为: 456 可以看到,由于是右向左取数,因此在字符串其它位置存在数字并不会影响结果

    2.7K20

    js提取字符串数字几种方法

    利用js脚本从一串字符串提取数字有多种方法,下面大熊博客就来简单介绍几种常用到。 js提取字符串数字方法 1、利用  parseFloat() 方法提取字符串数字。...parseFloat() 方法提取字符串数字,有很多限制。它只能提取开头为数字字符串数字,如果字符串开头第一个字符为非数字,则会提取失败。...console.log(parseFloat('daxion.cn1234')); // NaN console.log(parseFloat('m123.5')); //NaN 2、JS 使用正则提取字符串数字...例1: 可以利用正则方法将字符串中非数字字符给去掉,留下就是数字啦。...但要注意是,如果是要想提取数字中有非整数部份(带有小数点数),则无法提取小数点。

    12.4K41

    【正则表达式】字符串提取数字

    使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串开始。 ## $ 匹配字符串结尾。 ## \b 匹配一个单词边界。 ## \d 匹配任意数字。 ## \D 匹配任意非数字字符。...## 正则表达式点号通常意味着 “匹配任意单字符” 解题思路: 2.1 既然是提取数字,那么数字形式一般是:整数,小数,整数加小数; 2.2 所以一般是形如:----.-----;...2.3 根据上述正则表达式含义,可写出如下表达式:"\d+\.?...\d*"; 2.4 \d+匹配1次或者多次数字,注意这里不要写成*,因为即便是小数,小数点之前也得有一个数字;\.?...这个是匹配小数点,可能有,也可能没有;\d*这个是匹配小数点之后数字,所以是0个或者多个; 代码如下: # -*- coding: cp936 -*- import re string

    6.3K10

    Excel公式技巧13: 字符串提取数字——将所有数字提取到单个单元格

    前三篇文章分别讲解了提取位于字符串开头和末尾数字公式技术、提取字符串中所有的数字并放在不同单元格公式技术,本文研究字符串提取所有数字并将这些数字作为单个数字放置在单个单元格技术。...(A1))),1)/10,"")) 原理解析 现在,我们应该很熟悉ROW/INDIRECT函数组合了: ROW(INDIRECT("1:" & LEN(A1))) 生成由1至单元格A1字符串长度数组成数组...,本例A1里字符串长度为24,因此得到: {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24} 由1+LEN(A1)=25...NPV函数具有一个好特性,可以忽略传递给它数据区域中空格,仅按左至右顺序操作数据区域内数值。..."))) 其实,还有更复杂公式可以实现,例如数组公式: =SUM(MID(A1,LARGE(IF(ISNUMBER(0+MID(A1,Arry1,1)),Arry1),ROW(INDIRECT("1:

    2.6K40

    C语言实例:提取字符串全部数字

    近期热门学习C语言编程看这篇就够了,信息量很大,建议收藏【置顶】十大排序算法,来这看看-基本思想+动画演示+C语言实现【置顶】 一个好玩小游戏(纯C语言编写)【置顶】10分钟,快速掌握C语言指针【...微软官方发布新文件恢复工具 重庆百架无人机撞楼,又是程序背锅。原因:主机死机,不是硬件部事吗? 卧槽!上海陆家嘴一程序员加班吐血,吐完继续加。。...Idea公司真牛逼,发行最适合程序员编程字体~ 2021年 Linux 上最佳 C/C++ IDE 和代码编辑器【必读】 今天给大家分享一个实例: 实现功能:提取字符串全部数字 举个例子:我们输入字符串...代码分析 代码中使用到了isdigit()函数,函数详情如下: 函数名: isdigit 头文件: 函数原型: int isdigit(int ch); 功 能: 判断字符是否为十进制数字...参数:int ch 待检查字符 返回值:ch不是十进制数字 返回0 , ch是十进制数字 返回非0

    2.9K10

    Excel公式技巧12: 字符串提取数字——将所有数字分别提取到不同单元格

    前两篇文章分别讲解了提取位于字符串开头和末尾数字公式技术,本文研究字符串提取所有数字技术: 1. 字符串数字、字母和特殊字符组成 2. 数字字符串任意地方 3....字符串小数也一样提取 3. 想要结果是将所有数字返回独立单元格 例如,在单元格A1字符串: 81;8.75>@5279@4.=45>A?...(3)公式第一部分将给MID函数提供参数start_num,在生成结果之间减法提供相应参数num_chars。 (4)对于0-9范围整数ASCⅡ编码48到57,小数点是46。...因此,如果首先从字符串中排除与ASCⅡ编码47相对应任何字符(“/”),那么可以确定字符串ASCⅡ编码在46-57范围任何字符要么是数字要么是小数点。...因此,Arry2后生成数组让我们可以知道字符串字符数字变为非数字或者数字变为数字位置。 3.

    5.4K30

    python实现将字符串数字提取出来然后求和

    因工作原因,很久没有学习python知识了,感觉都快忘记了,前天看到一个练习题,如何将字符串数字提取出来,然后求和呢?下面我来解释一下如何通过python代码来实现。...题目:字符串43…3y2.f67se2.666. 将其中所有数字提取出来然后求和 思考: 1、字符串包含了字母和数字和小数点,怎么取出来比较呢? 2、小数点连续有很多个时候怎么处理?...解题思路: 1、首先通过循环遍历去将字符串数字取出来 2、去判断取出来数是数字还是字母还是小数点 3、多个小数点数要去掉 4.取出来结果是 43 3 2 67 2.666 源代码实现过程: str...: 57 ''' @destination 计算字符串整数和 method:将字符串字母同意替换成一个字符然后分隔就可以得到整数 这里面用到isdigit函数是判断字符串是否是数字 ''' def...以上这篇python实现将字符串数字提取出来然后求和就是小编分享给大家全部内容了,希望能给大家一个参考。

    3K20

    Excel公式技巧22: 字符串提取指定长度连续数字子串

    本文给出了一种可能包含若干个不同长度数字字符串提取指定长度数字解决方案。在实际工作表,存在着许多此类需求,例如从字符串获取6位数字账号。...20/04/15 - VAT Reg: 1234567: Please send123456 against Order #98765, Customer Code A123XY, £125.00 字符串提取出现一个...在获得了由子字符串每个单独字符组成数组之后,需要查询每个字符组确定其第一个和最后一个字符是否为非数字字符,中间六个字符是否为六个数字。...可以使用例如 ISNUMBER达到这个目的,这里选择ISERR同样出色,因为当尝试强制转换为数字时(例如这里使用+0),唯一不会导致错误单字符字符串就是0到9数字。...个字符第一个字符在字符串位置相对应,注意这8个字符第一个字符是非数字,所以需要向右移动一个位置,即想要得到六位数数字开始。

    3K20

    SQL 提取字符串字母

    问题描述 我们在进行数据处理时,可能经常需要对不同类型字符进行抽取。比如一些产品型号,批次之类会使用字母表示,这个时候该如何提取这些数据呢?...问题分析 不管是字母,还是数字,我们都可以使用相应匹配规则来抽取出来。但是由于字母是混合在字符串,我们需要循环对其进行匹配。 具体解法 我们创建一个函数,通过调用这个函数来找出所有的字母。...expression里第一次出现位置,起始值1开始算。...%','SQL数据库开发') 结果: 因为SQL就在第一位,所以返回结果为1 STUFF函数 STUFF ( expression1 , start , length ,expression2 ) 字符串...expression1 start位置开始,删除长度为length字符后,在start后面填充expression2。

    12310

    excel数据提取技巧:混合文本中提取数字万能公式

    一种是提取数值,有正负之分大小之别,也有小数点;另一种是提取数字字符串,如电话号码、身份证号码等,这里数字没有小数和负号,也没大小之分。...于是,MIDB函数功能就是③确定起始位置开始,分别从A2单元格文本截取长度为1-100个字节100个不等长字符串E{"-","-2","-29","-299",…"-299.19"}。...② LARGE(①,ROW($1:$100)) 通过LARGE函数,将①字符位置值集合大到小重新排序。由于数字在文本位置总是大于0,且数字越靠后,位置值越靠前。而其他字符总是小于0。...这里重点是将所有的0值置后,同时将所有数字位置值倒排。 ③ MID(0&A2,②+1,1) MID根据②位置值+10&A2逐一取数。...其实,提取数字字符串问题,19年以后版本有了一个很简单又不烧脑解决方案––通过CONCAT直接连接就行了。

    5.4K20

    Python提取列表数字函数代码设计

    Python提取列表数字方法如果要提取Python列表list数字元素,首先可以使用for循环来遍历列表元素,然后逐个判断元素是否为数字。...如此,我们就有了使用Python提取列表数字基本思路了。下面我们将设计该函数代码。...Python提取列表数字函数代码设计接下来需要设计两个函数,一个是用于判断Python列表元素是否是数字函数,如checkNum,另一个则是调用该函数并完成元素提取函数,如getNumElement...def checkNum(obj): return isinstance(obj,(int, float, complex))# 提取数字元素函数def getNumElement(listObj...list数字代码设计免责声明:内容仅供参考,不保证正确性。

    16920
    领券