【发布时间】:2013-01-13 00:04:03
【问题描述】:
我正在重构一些包含大量代码的脚本:
if 'mString1' in mStrVar:
retVal = 1
elif 'mString2' in mStrVar:
retVal = 2
elif 'mString3' in mStrVar:
retVal = 3
elif 'mString4' in mStrVar:
retVal = 4
else:
retVal = 0
我个人不喜欢这种方式,我总是更喜欢dict() 方法,但在这种特定情况下,我认为我不能那样做。
是否可以用更短的方式重写它? mString 在某些情况下会绕过 mString10。
高度赞赏任何提示,如果这是重复的,我无法找到任何相关的问题,我们深表歉意。
【问题讨论】:
-
您的问题到底是什么?
mStrVar是什么? -
这段代码你不喜欢什么?
-
如果
mStrVar = "mString1mString2mString3mString4"会怎样?恕我直言,将子字符串映射到单个数字的逻辑本身已经很脆弱。 -
另外,与正则表达式匹配可能更明确一些,并且可能能够在一次遍历字符串的过程中提取匹配的字符串。
-
mString1在mString10中,所以如果你使用这种方法,你需要注意顺序(我认为最长的优先应该有效,但我没有给出太多想。)
标签: python string python-2.7