如何解决如何在Python 3中使用布尔逻辑使此if语句更简洁?
我想从网站的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)
,
在这里使用正则表达式将是最佳选择,因为它很快并且可以在一行中解决。
但是,如果要对每个选项使用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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。