将字符串拆分为包含字母符号列表的列表

5

我的字符串包含 text = "a) 巴格达,伊拉克 b) 阿拉伯联合酋长国(可能)"

我想把它拆分成列表,如下所示 ["巴格达,伊拉克","阿拉伯联合酋长国(可能)"]

我使用的代码没有提供我想要的结果

re.split('\\s*([a-zA-Z\\d][).]|•)\\s*(?=[A-Z])', text)

请帮我解决以下问题


是否可能有一个字符串,类似于 a) 伊拉克巴格达 b) 阿拉伯联合酋长国(可能)c) 土耳其,如果阿联酋不在(b)中 - lxop
你在正则表达式模式字符串的开头缺少了 r - Jongware
1
返回翻译后的文本:[s for s in re.split('\s*([a-zA-Z\d][).]|•)\s*(?=[A-Z])', text) if len(s) > 4] - iamklaus
@SarthakNegi 针对 c) A 失败了。 - planetmaker
@lxop 是的,它也可以包含 c、d、e 等等...... - Sharjeel Ali Shaukat
2个回答

3

您可以使用列表推导式和第二个正则表达式创建所需的示例数据:

import re

text = "a) Baghdad, Iraq b) United Arab Emirates (possibly)"

# different 1.regex pattern, same result - refining with 2nd pattern
data = [x for x in re.split(r'((?:^\s*[a-zA-Z0-9]\))|(?:\s+[a-zA-Z0-9]\)))\s*', 
                            text) if x and not re.match(r"\s*[a-zA-Z]\)",x)]
print(data)

输出:

['Baghdad, Iraq', 'United Arab Emirates (possibly)']

请查看https://regex101.com/r/wxEEQW/1

1

不必使用re.findall,你可以直接使用re.split

import re
text = "a) Baghdad, Iraq b) United Arab Emirates (possibly)"
countries = list(filter(None, map(str.rstrip, re.split('\w\)\s', text))))

输出:

['Baghdad, Iraq', 'United Arab Emirates (possibly)']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接