首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用布尔逻辑使python 3中的if-语句更简洁?

如何使用布尔逻辑使python 3中的if-语句更简洁?
EN

Stack Overflow用户
提问于 2020-09-04 16:05:06
回答 2查看 58关注 0票数 0

我想从一个网站的json数据中提取由“后端”、“后端”或“后端”组成的职位名称。我通过以下代码成功地做到了这一点:

代码语言:javascript
复制
if "back-end" in jobtitle.lower():
            print(jobtitle)
if "back end" in jobtitle.lower():
            print(jobtitle)
if "backend" in jobtitle.lower():
            print(jobtitle)
else:
            continue

示例输出如下:

代码语言:javascript
复制
Software Back-End Developer
(Senior) Back-end PHP Developer
Backend Developer (m/w/d)
Back End Developer
Front-End / Back-End Developer (m/w/d)

我怎样才能使它更简洁?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 16:14:33

你必须使用if ... in吗?另一个解决方案是使用正则表达式

back[\-\s]?end 在这里试试

解释:

  • back:匹配"back“
  • [\-\s]:这些字符中的任何一个:-<whitespace>
  • ?:0或前一种
  • end:匹配"end“

在Python中像这样运行它:

代码语言:javascript
复制
rexp = re.compile(r"back[\s\-]?end", re.IGNORECASE)
if re.search(rexp, jobtitle):
    print(jobtitle)
票数 4
EN

Stack Overflow用户

发布于 2020-09-04 16:22:35

在这里使用正则表达式将是最优的,因为它是快速的,它将在一行中解决它。

但是,如果要对每个选项使用if ... in语句,则可以在同一语句中使用any()对它们进行比较:

代码语言:javascript
复制
x = """Software Back-End Developer
(Senior) Back-end PHP Developer
Backend Developer (m/w/d)
Back End Developer
Front-End / Back-End Developer (m/w/d)""".splitlines()

for row in x:
  if any(i in row.lower() for i in ["backend", "back end", "back-end"]):
    print(row)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63744584

复制
相关文章

相似问题

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