如何使用正则表达式从坐标对中提取x和y

2024-06-26 01:37:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用regex从(a,b)中提取a和b?在

例如:

string = "(1,-5)"
string = "(0, \infty)"

然后输出结果是:

^{pr2}$

请注意,这不仅需要处理整数,还需要处理字符串。在


Tags: 字符串string整数regexpr2infty
3条回答

您可以使用^{}^{}函数:

>>> string = "(1,-5)"
>>> map(int,re.findall(r'-?\d',string))
[1, -5]

模式\d将匹配字符串中的任何数字!在

您可以使用ast.literal_eval代替regex:

>>> import ast
>>> my_string = "(1,-5)"
>>> x,y = ast.literal_eval(my_string)
>>> x
1
>>> y
-5

如果你关心科学记数法,那么是的,它会起作用:

^{pr2}$

这对于正则表达式来说是很棘手的,因为数字的语法可以包含非数字。E、 g.,3.8e8是一个合法的数字,但是有一个.和一个e

>>> 3.8e8
380000000.0

这意味着带有\d的正则表达式将不起作用:

^{pr2}$

最好是将逗号上的字符串拆分,然后删除括号:

>>> def coords(string):
...   x, _, y = string.partition(',')
...   return x.lstrip('('), y.rstrip(')')
... 
>>> coords('(123,456)')
('123', '456')

当然,这也很脆弱,因为那里可能有空白,等等。如果你没有一个具体的说明什么是合法的,什么是不合法的,那就很难处理输入。在

但是,如果您希望它是合法的Python输入,那么最好只使用文本值\u eval,如another answer中所建议的那样。在

相关问题 更多 >