叮当猫咪
使用正则表达式a = re.findall('\)?[^()]*\(?', s)excluded = a[::2]included = a[1::2]print(included, excluded, sep='\n')['hahaha', 'hehehe', '']['apple banana lemmon (', ') dog cat whale (', ') red blue black']照顾空字符串a = re.findall('\)?[^()]*\(?', s)excluded = [*filter(bool, a[::2])]included = [*filter(bool, a[1::2])]print(included, excluded, sep='\n')['hahaha', 'hehehe']['apple banana lemmon (', ') dog cat whale (', ') red blue black']没有正则表达式from itertools import cycledef f(s): c = cycle('()') a = {'(': 1, ')': 0} while s: d = next(c) i = s.find(d) if i > -1: j = a[d] yield d, s[:i + j] s = s[i + j:] else: yield d, s breakincluded = []excluded = []for k, v in f(s): if k == '(': excluded.append(v) else: included.append(v)print(included, excluded, sep='\n')['hahaha', 'hehehe']['apple banana lemmon (', ') dog cat whale (', ') red blue black']相同想法但不覆盖 sfrom itertools import cycledef f(s): c = cycle('()') a = {'(': 1, ')': 0} j = 0 while True: d = next(c) i = s.find(d, j) if i > -1: k = a[d] yield d, s[j:i + k] j = i + k else: yield d, s[j:] breakincluded = []excluded = []for k, v in f(s): if k == '(': excluded.append(v) else: included.append(v)print(included, excluded, sep='\n')['hahaha', 'hehehe']['apple banana lemmon (', ') dog cat whale (', ') red blue black']