繁体   English   中英

从具有连续数字字符的字符串中提取数字

[英]Extract digits from string with consecutive digit characters

我不能使用正则表达式或库:(。我需要从字母数字字符串中提取所有数字。每个连续的数字序列(我们可以称为“温度”)都被(+、-或*)排除在外,将被考虑作为单个数字(都是整数,没有浮点数)。字符串中还有其他可以忽略的非数字字符。我需要将每个“温度”提取到数据结构中。

示例字符串 "BARN 21+77-48CDAIRY 87+56-12" 产生 [21, 77, 48, 87, 56, 12]

数据串可以大很多很多。

我能找到的所有解决方案都假设字符串中只有 1 个数字序列(温度),或者(温度)由空格/分隔符分隔。 我能够通过遍历字符串并在每个数字序列之前和之后添加一个空格然后使用 split 来开始工作,但这感觉就像在作弊。 我想知道你们专业人士是否会为了一个快乐的解决方案而扭曲数据?

传入数据“BARN 21+77-48CDAIRY 87+56-12” temp 是我将数据更改为

temp = "BARN* 21 + 77 - 48 DAIRY* 87 + 56 - 12"
result = [int(i)
for i in temp.split()
    if i.isdigit()]
    print("The result ", result)

结果 [21, 77, 48, 87, 56, 12]

这是一个不使用正则表达式的版本:

inp = "BARN21+77-48CDAIRY87+56-12"
inp = ''.join(' ' if not ch.isdigit() else ch for ch in inp).strip()
nums = inp.split()
print(nums)  # ['21', '77', '48', '87', '56', '12']

如果您可以使用正则表达式,我们可以将re.findall与正则表达式模式\d+一起使用:

inp = "BARN21+77-48CDAIRY87+56-12"
nums = re.findall(r'\d+', inp)
print(nums)  # ['21', '77', '48', '87', '56', '12']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM