假设我有一个表达式
exp="\"OLS\".\"ORDER_ITEMS\".\"QUANTITY\" <50 and \"OLS\".\"PRODUCTS\".\"PRODUCT_NAME\" = 'Kingston' or \"OLS\".\"ORDER_ITEMS\".\"QUANTITY\" <20"
我想将表达式按和、或进行拆分,以便得到结果
exp=['\"OLS\".\"ORDER_ITEMS\".\"QUANTITY\" <50','\"OLS\".\"PRODUCTS\".\"PRODUCT_NAME\" = 'Kingston'','\"OLS\".\"ORDER_ITEMS\".\"QUANTITY\" <20']
这就是我尝试过的:
import re
res=re.split('and|or|',exp)
但是它会被每个字符分割我们怎么能让它被单词分割呢
说明:第一次拆分为“和”。现在尝试吐出在“或”上获得的每个元素。这将创建列表列表。使用itertools创建一个平面列表&;从平面列表中的每个新元素中删除额外的空格
您可以分两步完成:
[ss for s in exp.split(" and ") for ss in s.split(' or ')]
您的正则表达式有三种选择:“and”、“or”或空字符串:
and|or|
省略后面的
|
以仅由这两个单词分割请注意,这将无法可靠地工作;它将在“and”的任何实例上拆分,即使是在引号或单词的一部分中。您可以使用
\b
使其仅在完整单词上拆分,但仍将在产品名称上拆分,如'Black and Decker'
。如果您需要它的可靠性和通用性,那么必须使用完整的语法解析字符串(如果是标准SQL或类似的语法,则可能使用现成的解析器)相关问题 更多 >
编程相关推荐