尝试拆分此行:
formula='%abc-def%+%hij-klm%/%opq+rst%-%uvw-xyz%
变量包含"%"
符号,必须保持不变。
我希望在+-/*
上拆分,而不会因名称中的'-'
而拆分变量。
是否有一种简单的方法,而不必使用for循环扫描每个字符?
第一道:
拆分变量(不好):
re.compile("[\+\/\-\*]").split(formula)
['%abc', 'def%', '%hij', 'klm%', '%opq', 'rst%', '%uvw', 'xyz%']
第二路:
失去%(不好):
re.compile("%[\+\/\-\*]%").split(formula)
['%abc-def', 'hij-klm', 'opq+rst', 'uvw-xyz%']
预期输出:
我正在寻找能够收获的东西:
['%abc-def%', '%hij-klm%', '%opq+rst%', '%uvw-xyz%']
谢谢, 丹
答案 0 :(得分:0)
您可以通过使用外观来阻止re.compile("%[\+\/\-\*]%").split(formula)
删除%
个字符:
re.compile(r"(?<=%)[+/*-](?=%)").split(formula)
另一个解决方案是在[+/*-]
上进行拆分,但前提是后跟偶数个%
字符:
re.split(r'[+*/-](?=(?:(?:[^%]*%){2})*$)', formula)
答案 1 :(得分:0)
两步解决方案:
import re
tempList = re.split("(\-|\+|\/|\*)(?=%)",'%abc-def%+%hij-klm%/%opq+rst%-%uvw-xyz%')
finalList = [x for x in tempList if "%" in x]
['%abc-def%', '%hij-klm%', '%opq+rst%', '%uvw-xyz%']
我希望这会有所帮助。