【问题标题】:Two simplified conditions in one [duplicate]两个简化条件合二为一[重复]
【发布时间】:2021-02-10 14:27:06
【问题描述】:

我想在同一个字符串中创建一个有两种可能性的条件:

for k in string:
    if 'www.housemike.com/b' in k:
        do something

for k in string:
    if 'www.housemike.com/c' in k:
        do something

是否有可能使这比以下更简化:

for k in string:
    if 'www.housemike.com/b' or 'www.housemike.com/c' in k:
        do something

也许可以在“b”和“c”之间使用正则表达式?

【问题讨论】:

  • 也许你可以缩短这条线让它看起来很酷,但它会更难理解,为了简单起见,我建议你坚持这个if or
  • k 是字符串还是列表?
  • 我已经修改了代码,使其更清晰谢谢大家的帮助
  • 我希望您知道您当前的合并条件并没有按照您的想法进行。应该是'www.housemike.com/b' in k or 'www.housemike.com/c' in k:

标签: python


【解决方案1】:

您可以使用带有re.search 的正则表达式方法:

for item in k:
    if re.search(r'^www\.housemike\.com/[bc]$', item):
        do something

我假设您想要匹配这些 URL 的整个字符串。如果没有,并且您可以容忍子字符串匹配,那么只需从正则表达式中删除 ^$ 锚并使用:

www\.housemike\.com/[bc]

【讨论】:

  • @khelwood 我假设 OP 正在字符串列表中寻找 URL 的完全匹配,并且不想要子字符串匹配。也许我错了。
【解决方案2】:

any() 与列表一起使用:

if any('www.housemike.com/'+x in k for x in ['b','c']):
  # do something

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2021-12-17
    • 2020-04-30
    • 2021-01-23
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多