在 python 3 中如何使用布尔逻辑使这个 if 语句更简洁?

How do I use boolean logic to make this if-statement more concise in python 3?

我想从网站的 json 数据中提取由“后端”、“后端”或“后端”组成的职位。我设法使用以下代码做到了这一点:

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

示例输出如下:

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)

如何让它更简洁?

使用if ... in吗?另一种解决方案是使用 regular expressions

back[\-\s]?end Try it here

解释:

  • back:匹配“后面”
  • [\-\s]:这些字符中的任何一个:-<whitespace>
  • ?: 零个或前一个
  • end:匹配“结束”

运行 它在 Python 中像这样:

rexp = re.compile(r"back[\s\-]?end", re.IGNORECASE)
if re.search(rexp, jobtitle):
    print(jobtitle)

这里用regular-expression最好,因为速度快,一行就解决了。

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

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)