gpt4 book ai didi

用于 float 或整数的 Python 正则表达式,但不将 float 拆分为两个 float

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:16 30 4
gpt4 key购买 nike

我正在尝试从可以是 int 或 float 的文件中提取数据。我发现这个正则表达式将从文件 (\d+(\.\d+)?) 中提取这两种类型,但我遇到的问题是它将 float 拆分为两个。

>>> import re
>>> line = "(gr_line (start 218.948 126.111) (end 218.948 143.637) (angle 90) (layer Edge.Cuts) (width 0.1) (tstamp 53D2B530))"
>>>
>>> print re.findall(r'\(start (\d+(\.\d+)?) (\d+(\.\d+)?)\)', line)
[('218.948', '.948', '126.111', '.111')]
>>>

这样做的目的是获取由 (start n n) 定义的起始坐标,但如您所见,它将 218.948 拆分为 218.948.948126.111 也有同样的问题。

如果输入字符串的起始括号中有一个 int,我会得到以下信息:

>>> line = "(gr_line (start 218.948 126) (end 218.948 143.637) (angle 90) (layer Edge.Cuts) (width 0.1) (tstamp 53D2B530))"
>>> print re.findall(r'\(start (\d+(\.\d+)?) (\d+(\.\d+)?)\)', line)
[('218.948', '.948', '126', '')]
>>>

这里的问题是添加的空索引——不是一个大问题,但有点不方便。

如何格式化我的正则表达式,使其捕获一个 float 并返回该 float ,或者捕获一个整数并返回该整数。

最佳答案

您正在使用 (\d+(\.\d+)?)

捕获并保存两个分组

试试这个:

(\d+(?:\.\d+)?)

这只会保存整个 float 的分组。

关于用于 float 或整数的 Python 正则表达式,但不将 float 拆分为两个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170209/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com