首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到名称在python列表中有4到5个字母和regex的国家?

如何找到名称在python列表中有4到5个字母和regex的国家?
EN

Stack Overflow用户
提问于 2022-10-23 19:28:15
回答 2查看 69关注 0票数 0

如何为有4个或5个字母的国家在python中生成带有regex的列表?

代码语言:javascript
复制
names = ['Azerbaijan', 'Zimbabwe', 'Cuba', 'Cambodia', 'Somalia','Mali', 'Belarus', "Côte d'Ivoire", 'Venezuela', 'Syria', 'Kazakhstan', 'Austria', 'Malawi', 'Romania', 'Congo (Brazzaville)']

我试图这样做,但它返回一个空列表:

代码语言:javascript
复制
import re

n = [w for w in names if re.findall(r'[A-Z]{4,6},', str(names))]

print(n)

Output:
[]

这是一个练习,所以我只能用模块re来完成它。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-23 19:33:31

您可以使用len(w)

代码语言:javascript
复制
>>> names = ['Azerbaijan', 'Zimbabwe', 'Cuba', 'Cambodia', 'Somalia','Mali', 'Belarus', "Côte d'Ivoire", 'Venezuela', 'Syria', 'Kazakhstan', 'Austria', 'Malawi', 'Romania', 'Congo (Brazzaville)']

>>> [w for w in names if w.isalpha() and (len(w) in range(4,6))]
['Cuba', 'Mali', 'Syria']

但是如果您想用regex来解决这个问题,您可以使用re.search,如果您在list中有numbers,您可以使用walrus操作符(:=)来处理python>= 3.8。

代码语言:javascript
复制
names = ['1234', 'Azerbaijan', 'Cuba']
print([w for w in names if (tmp := re.search(r'[A-Za-z]{4,5}', w)) and (tmp.group(0) == w)])
# ['Cuba']

对于python < 3.8,可以使用try/except

代码语言:javascript
复制
names = ['1234', 'Azerbaijan', 'Cuba']

res = []
for w in names:
    try :
        if re.search(r'[A-Za-z]{4,5}', w).group(0) == w:
            res.append(w)
    except AttributeError:
        continue
print(res)
# ['Cuba']
票数 0
EN

Stack Overflow用户

发布于 2022-10-23 19:33:16

如果您需要使用re,那么下面是您的答案find words of length 4 using regular expression

如果您不需要使用re,请在名称中使用n= name,如果len( name ) in (4,5)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74174171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档