繁体   English   中英

用多个单词分割字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM