迭代并使用正则表达式匹配所有元素

2024-09-28 22:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这样的东西:

data = ['Alice Smith and Bob', 'Tim with Sam Dunken', 'Uncle Neo & 31']

我想用名字替换每个元素,这样看起来像这样:

^{pr2}$

到目前为止,我得到:

for i in range(len(data)):
    if re.match('(.*) and|with|\&', data[i]):
        a = re.match('(.*) and|with|\&', data[i])
        data[i] = a.group(1)

但它似乎不起作用,我想这是因为我的模式,但我想不出正确的方法来做到这一点。在


Tags: andre元素datasammatchwith名字
3条回答

在您的尝试中,|需要用括号分组。总之,这太复杂了。在

我只需要使用re.sub删除分隔词和其余的:

data = [re.sub(" (and|with|&) .*","",d) for d in data]

结果:

^{pr2}$

使用列表理解重新分割公司名称:

result = [re.split(r' (?:and|with|&) ', x)[0] for x in data]

你可以试试这个:

import re
data = ['Alice Smith and Bob', 'Tim with Sam Dunken', 'Uncle Neo & 31']
final_data = [re.sub('\sand.*?$|\s&.*?$|\swith.*?$', '', i) for i in data]

输出:

^{pr2}$

相关问题 更多 >