Beispiel #1
0
def is_html_matched(raw):
    S = ArrayStack()
    j = raw.find('<')
    root = etree.Element("root")
    curr = root

    while j != -1:
        k = raw.find('>', j + 1)
        if k == -1:
            return None
        tag = raw[j + 1:k]

        if tag.startswith('/'):
            if S.is_empty():
                return False
            elif S.pop() != tag[1:]:
                return False
            curr = curr.getparent()
        else:
            curr = etree.SubElement(curr, tag)
            S.push(tag)

        j = raw.find('<', k + 1)
    print(etree.tostring(root).decode('utf8'))
    return S.is_empty()
Beispiel #2
0
def is_matched(expr):
    left = '{(['
    right = '})]'
    S = ArrayStack()
    for c in expr:
        if c in left:
            S.push(c)
        elif c in right:
            if S.is_empty():
                return False
            elif right.index(c) != left.index(S.pop()):
                return False
    return S.is_empty()
def balanced_expression(str_input):
    stack = ArrayStack()
    for i in str_input:
        if i not in d:
            stack.push(i)
        else:
            try:
                output = stack.pop()
            except:
                return False
            if output != d[i]:
                return False
    return stack.is_empty()
def balanced_expression(str_input):
    d = {"}": "{", ")": "(", "]": "["}
    stack = ArrayStack()
    for i in str_input:
        if i in "{[(":
            stack.push(i)
        else:
            try:
                out = stack.pop()
                if out != d[i]:
                    return False
            except:
                return False
    return stack.is_empty()
def is_matched_html(html_str):
    lst = [i for i in get_tokens(html_str)]
    stack = ArrayStack()
    for i in lst:
        if i[1] == "/":
            try:
                out = stack.pop()
                if out[1:-1] != i[2:-1]:
                    return False
            except:
                return False
        else:
            stack.push(i)
    return stack.is_empty()
def is_mathced_html(html_str):
    stack = ArrayStack()
    for i in get_tags(html_str):
        if i[0] != "/":
            stack.push(i)
        else:
            try:
                val = stack.pop()
            except:
                return False
            if i[1:] != val:
                return False

    return stack.is_empty()