2024-06-26 01:37:59 发布
网友
如何使用regex从(a,b)中提取a和b?在
例如:
string = "(1,-5)" string = "(0, \infty)"
然后输出结果是:
请注意,这不仅需要处理整数,还需要处理字符串。在
您可以使用^{}和^{}函数:
>>> string = "(1,-5)" >>> map(int,re.findall(r'-?\d',string)) [1, -5]
模式\d将匹配字符串中的任何数字!在
\d
您可以使用ast.literal_eval代替regex:
ast.literal_eval
>>> import ast >>> my_string = "(1,-5)" >>> x,y = ast.literal_eval(my_string) >>> x 1 >>> y -5
如果你关心科学记数法,那么是的,它会起作用:
这对于正则表达式来说是很棘手的,因为数字的语法可以包含非数字。E、 g.,3.8e8是一个合法的数字,但是有一个.和一个e:
3.8e8
.
e
>>> 3.8e8 380000000.0
这意味着带有\d的正则表达式将不起作用:
最好是将逗号上的字符串拆分,然后删除括号:
>>> def coords(string): ... x, _, y = string.partition(',') ... return x.lstrip('('), y.rstrip(')') ... >>> coords('(123,456)') ('123', '456')
当然,这也很脆弱,因为那里可能有空白,等等。如果你没有一个具体的说明什么是合法的,什么是不合法的,那就很难处理输入。在
但是,如果您希望它是合法的Python输入,那么最好只使用文本值\u eval,如another answer中所建议的那样。在
您可以使用^{} 和^{} 函数:
模式
\d
将匹配字符串中的任何数字!在您可以使用
ast.literal_eval
代替regex:如果你关心科学记数法,那么是的,它会起作用:
^{pr2}$这对于正则表达式来说是很棘手的,因为数字的语法可以包含非数字。E、 g.,
3.8e8
是一个合法的数字,但是有一个.
和一个e
:这意味着带有
^{pr2}$\d
的正则表达式将不起作用:最好是将逗号上的字符串拆分,然后删除括号:
当然,这也很脆弱,因为那里可能有空白,等等。如果你没有一个具体的说明什么是合法的,什么是不合法的,那就很难处理输入。在
但是,如果您希望它是合法的Python输入,那么最好只使用文本值\u eval,如another answer中所建议的那样。在
相关问题 更多 >
编程相关推荐