[英]string splitting with multiple words
我想找到一种方法将字符串拆分为列表,但其中一些元素仍然包含多个单词。 在我的情况下,如果单词不在括号之间,则正常拆分字符串,否则不应拆分(例如 (word1 word2) word3 (word4 word5) 应导致 ['word1 word2', 'word3', 'word4 word5']。我找到了一个正则表达式模式来获取括号之间的所有元素,然后添加一些循环,这就是我到目前为止所做的。
import re
def get_queries(s):
parentheses_queries = re.findall('\((.*?)\)', s)
if not parentheses_queries:
return s.split()
for q in parentheses_queries:
if f'({q})' in s:
s = s.replace(q, '')
queries = s.strip().split()
i = 0
while '()' in queries:
queries[queries.index('()')] = parentheses_queries[i]
i += 1
return queries
s = '(word1 word2) word3 (word4 word5)'
print(get_queries(s))
但我认为有一种非常有效的方法可以做到这一点。 有任何想法吗?
使用如何用不在括号内的逗号分割的正则表达式? 你可以这样做:
s = '(word1 word2) word3 (word4 word5)'
s_split = [x.replace("(", "").replace(")", "") for x in re.split(r" \s*(?![^()]*\))", s)]
但是,这取决于您要如何处理嵌套括号(如果您的文本中有任何括号)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.