计算字符串中括号之间的数字

时间:2019-04-26 09:28:10

标签: python python-3.x string

我有一个看起来像这样的字符串

"(1 4 3 2 12 7 10 5)(9 11)(4 3 2 3 2 1)"

有没有一种方法可以计算两个方括号之间的数字数量并获得类似

的列表
[8,2,6]

其中8 =计算数字数量的第一个括号的长度?

3 个答案:

答案 0 :(得分:4)

这是使用https://github.com/mwc/treeify获取字符串列表的一种方法,该字符串列表的括号之间是数字,而列表理解则是对其中的数字进行计数:

s = '(1 4 3 2 12 7 10 5)(9 11)(4 3 2 3 2 1)'
import re
l = re.findall(r'\(((?:\d+\s*)+)\)', s)
# ['1 4 3 2 12 7 10 5', '9 11', '4 3 2 3 2 1']
[len(i.split()) for i in l]
# [8, 2, 6]

答案 1 :(得分:1)

这是一个幼稚的解决方案

def getlist(input_string):
    output = []
    count = 0
    for i in range(1, len(input_string)-1):
        char = input_string[i]
        if char == "(" :
            output.append(count)
            count = 0
        if char.isdigit() and not input_string[i+1].isdigit():
            count += 1
    output.append(count)
    return output

答案 2 :(得分:1)

您可以针对每次出现的开括号和闭括号进行拆分,即')(',然后针对每个空格进行拆分

def get_lengths(s):
    list1=s.split(")(")
    return [len(x.split()) for x in list1]

s=input()
print(get_lengths(s))