Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证Python中一个字符串中存在多少对括号_Python_Regex_String_Python 3.x - Fatal编程技术网

验证Python中一个字符串中存在多少对括号

验证Python中一个字符串中存在多少对括号,python,regex,string,python-3.x,Python,Regex,String,Python 3.x,我想知道是否有办法找出一个字符串中有多少对括号 我必须做一些字符串操作,有时我会做如下操作: some_字符串='1.8.0*99000000*kWh' 或者类似的 一些字符串='1.6.1*01007.717*kW1604041815' 我想做的是: 获取括号之间的所有数字,例如第一个字符串:0000000 如果有2对括号,则最多2对获取所有数字并将它们连接起来,例如,对于第二个字符串,我将有:0077171604041815 如何验证一个字符串中有多少对括号,以便稍后执行以下操作: if n

我想知道是否有办法找出一个字符串中有多少对括号

我必须做一些字符串操作,有时我会做如下操作:

some_字符串='1.8.0*99000000*kWh'

或者类似的

一些字符串='1.6.1*01007.717*kW1604041815'

我想做的是:

获取括号之间的所有数字,例如第一个字符串:0000000 如果有2对括号,则最多2对获取所有数字并将它们连接起来,例如,对于第二个字符串,我将有:0077171604041815 如何验证一个字符串中有多少对括号,以便稍后执行以下操作:

if number_of_pairs == 1:
    do_this
else:
    do_that
或者,也许有一个更简单的方法来做我想做的事,但目前还想不出一个


我知道如何只获取字符串中的数字:final_string=re.sub“[^0-9]”,我的字符串,但我想知道如何处理这两种情况。

因为括号总是成对出现,所以只要数一数字符串中的左括号或右括号,就可以得到答案

num_of_parenthesis = string.count('(')

因为括号总是成对出现的,所以只要数一数字符串中的左括号或右括号,就可以得到答案

num_of_parenthesis = string.count('(')

如果要将所有数字放在一个字符串中,请在替换任何数字后使用re.findall。并加入一个字符串:

In [15]: s="'1.6.1*01(007.717*kW)(1604041815)'"

In [16]: ("".join(re.findall("\((\d+).*?\)", s.replace(".", ""))))
Out[16]: '0077171604041815'

In [17]: s = '1.8.0*99(0000000*kWh)'
In [18]: ("".join(re.findall("\((\d+).*?\)", s.replace(".", ""))))
Out[18]: '0000000'
当您只想提取其中的任何数字时,paren的计数是不相关的。基于您最多只有两对的事实,我认为格式是一致的

或者,如果参数始终有数字,请在参数中查找数据,并在所有栏中添加数字:

In [20]:  "".join([re.sub("[^0-9]", "", m) for m in  re.findall("\((.*?)\)", s)])
Out[20]: '0077171604041815'

如果要将所有数字放在一个字符串中,请在替换任何数字后使用re.findall。并加入一个字符串:

In [15]: s="'1.6.1*01(007.717*kW)(1604041815)'"

In [16]: ("".join(re.findall("\((\d+).*?\)", s.replace(".", ""))))
Out[16]: '0077171604041815'

In [17]: s = '1.8.0*99(0000000*kWh)'
In [18]: ("".join(re.findall("\((\d+).*?\)", s.replace(".", ""))))
Out[18]: '0000000'
当您只想提取其中的任何数字时,paren的计数是不相关的。基于您最多只有两对的事实,我认为格式是一致的

或者,如果参数始终有数字,请在参数中查找数据,并在所有栏中添加数字:

In [20]:  "".join([re.sub("[^0-9]", "", m) for m in  re.findall("\((.*?)\)", s)])
Out[20]: '0077171604041815'
你可以这样做:假设你已经知道至少有一个括号

或仅使用re.sub:

你可以这样做:假设你已经知道至少有一个括号

或仅使用re.sub:


s=some_string.count+some_string.count/2嵌套括号怎么样?如果你想用Python正则表达式来处理它们,那真的很有趣……澄清一下:没有必要验证正确的嵌套,因为这不是一种常规语言?不会有任何嵌套的括号^ ^ ^在这种情况下必须得到什么结果:toto或toto,这些类型的字符串可能吗?s=some_string.count+some_string.count/2嵌套括号怎么样?如果你想用Python正则表达式来处理它们,那真的很有趣……澄清一下:没有必要验证正确的嵌套,因为这不是一种常规语言?不会有任何嵌套的括号^ ^ ^在这种情况下必须得到什么结果:toto或toto,这些类型的字符串可能吗?如果存在不匹配括号的风险,您也可以计算字符串中存在多少括号来处理这些情况…@arewm不会有任何风险,因为在正确的表达式中,括号总是成对出现。我同意,如果有正确的表达式,风险不会很大。我提出这个建议是因为在我们知道表达式是正确的之前,可以进行此检查,从而为您提供优雅的错误处理机会。这里可能不相关,但只是提醒其他人以后可能会看到。如果存在不匹配括号的风险,您还可以计算字符串中存在多少括号来处理这些情况…@arewm不会有任何风险,因为在正确的表达式中,括号总是成对出现的。我同意,如果表达式正确,风险不大。我提出这个建议是因为在我们知道表达式是正确的之前,可以进行此检查,从而为您提供优雅的错误处理机会。可能与此无关,但只是提醒未来可能会关注的其他人。