有没有办法在match case语句中使用endswith/startswith? [重复]

问题描述 投票:0回答:1

有没有办法使用匹配大小写来选择字符串结尾/开头,如下所示?

match text_string:
  case 'bla-bla':
    return 'bla'
  case .endswith('endofstring'):
    return 'ends'
  case .startswith('somestart'):
    return 'start'
python match case
1个回答
19
投票

你很接近。您想要一个模式上有条件的guard。在以下情况下,仅匹配该值。

match text_string:
  case 'bla-bla':
    return 'bla'
  case s if s.endswith('endofstring'):
    return 'ends'
  case s if s.startswith('somestart'):
    return 'start'

与以下内容相比,这并没有多大好处。

if text_string == 'bla-bla':
  return 'bla'
elif text_string.endswith('endofstring'):
  return 'ends'
elif text_string.startswith('somestart'):
  return 'start'

除非您也使用

match
并且想要区分两个相同的模式。

© www.soinside.com 2019 - 2024. All rights reserved.