首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析"number @ number“和类似序列

解析"number @ number“和类似序列
EN

Stack Overflow用户
提问于 2022-01-06 19:06:09
回答 1查看 54关注 0票数 -1

我正在研究一个解析器函数,它最终将用于钢铁构件重量的计算。该函数接受一个简单的输入字符串,并返回单个值(数量、口径、分隔)作为列表中的变量。

例如,它应该使用"5#5“(5个5条)并返回5,5,0。或"#5@ 250“(5小节间距为250毫米)并返回0,5,250。很简单。

我的方法是对其使用正则表达式,然后使用re.search或split来获取各个组件。第一种情况是"\d+#\d+",第二种是"#\d+@\d+“。

问题是当我的输入有小数的时候。在某些情况下,可能有人会指定"#5@122.5“。在这种情况下,我的正则表达式搞砸了,我得到的是"122“而不是"122.5”。我一直在寻找浮点数的正则表达式,但据我所见,这个表达式变得非常庞大,非常快。

在将来,我想增加对像“#5@2501500 t”这样的表达式的支持(5在250 to长,500 to横向),这使得正则表达式更大、更复杂。

这让我怀疑: regex是解决这一问题的最佳方法吗?或者,我还可以使用其他的东西来更好地检测表达式格式,并相应地进行分离吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 20:41:51

在我看来,您应该避免在本例中使用regex,并尝试这样的方法(这是原始的,但可以很容易地扩展以满足更详细的需求):

代码语言:javascript
复制
def bar_split(text):
    if "@" not in text:
        print(text.split("#") + ["0"])
    else:
        print(["0"] + text[1:].split("@"))


bar_split("5#5")    # ['5', '5', '0']
bar_split("#5@250") # ['0', '5', '250']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70612355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档