If statement 具有两种不同条件的同一操作的合并代码

If statement 具有两种不同条件的同一操作的合并代码,if-statement,merge,If Statement,Merge,我有个问题。我正在整理一些代码。 我有这部分代码 if (self.type == self.BETAECM): for line in contentInfo: if line.startswith("caid:"): caid = self.readEcmInfo(line) if "x" in caid: idx = caid.in

我有个问题。我正在整理一些代码。 我有这部分代码

        if (self.type == self.BETAECM):
        for line in contentInfo:
            if line.startswith("caid:"):
                caid = self.readEcmInfo(line)
                if "x" in caid:
                    idx = caid.index("x")
                    caid = caid[(idx + 1):]
                    caid = caid[:4]
                    caid = caid.upper()
                    if (caid >= "1700") and (caid <= "17FF"):
                        return True
            elif line.startswith("====="):
                caid = self.readCaid(line)                        
                if "x" in caid:
                    idx = caid.index("x")
                    caid = caid[(idx + 1):]
                    caid = caid[:4]
                    caid = caid.upper()
                    if (caid >= "1700") and (caid <= "17FF"):
                        return True
        return False
if(self.type==self.BETAECM):
对于contentInfo中的行:
如果line.startswith(“caid:”):
caid=self.readEcmInfo(行)
如果caid中的“x”:
idx=资本指数(“x”)
caid=caid[(idx+1):]
caid=caid[:4]
caid=caid.upper()

如果(caid>=“1700”)和(caid=“1700”)和(caid),则需要使用OR运算符将它们连接起来。换句话说,您需要知道哪一个条件为真才能执行代码


如果line.startswith(“caid:”)| line.startswith(“==”):

我不懂这种语言,但我会尝试一下

for line in contentInfo:
  caid = "nothing"
  if line.startswith("caid:"):
    caid = self.readEcmInfo(line)
  elif line.startswith("====="):
    caid = self.readCaid(line)                        
  if "x" in caid:
    idx = caid.index("x")
    caid = caid[(idx + 1):]
    caid = caid[:4]
    caid = caid.upper()
    if (caid >= "1700") and (caid <= "17FF"):
      return True
contentInfo中的行的
:
caid=“没什么”
如果line.startswith(“caid:”):
caid=self.readEcmInfo(行)
elif行。起始带(“=======”):
caid=self.readCaid(行)
如果caid中的“x”:
idx=资本指数(“x”)
caid=caid[(idx+1):]
caid=caid[:4]
caid=caid.upper()
如果(caid>=“1700”)和(caid非常感谢!
我缺少的是,最后一个if语句(caid:)必须与前一个处于相同的级别。它现在可以工作了

因此,如果我想合并另一个示例:

def readEcmInfo(self, line):
    if ":" in line:
        idx = line.index(":")
        line = line[(idx + 1):]
        line = line.replace("\n", "")
        while line.startswith(" "):
            line = line[1:]
        while line.endswith(" "):
            line = line[:-1]
        return line
    else:
        return ""
    elif "CaID" in line:
        idx = line.index("D")
        line = line[(idx + 1):]
        line = line.replace("\n", "")
        while line.startswith(" "):
            line = line[1:]
        while line.endswith(" "):
            line = line[:-1]
        return line
    else:
        return ""
应该这样吗

def readEcmInfo(self, line):
    if ":" in line:
        idx = line.index(":")
        line = line[(idx + 1):]
        line = line.replace("\n", "")
    elif "CaID" in line:
        idx = line.index("D")
        line = line[(idx + 1):]
        line = line.replace("\n", "")
    while line.startswith(" "):
        line = line[1:]
    while line.endswith(" "):
        line = line[:-1]
        return line
    else:
        return ""

这是什么语言?对不起,忘了提一下,是python!新问题,我有一个错误:如果“x”在caid中:UnboundLocalError:分配前引用的局部变量“caid”谢谢,我也会尝试!对不起,我的答案是错误的,没有看到每个变量上都有不同的语句。@Beta的一个是可以的。我不知道控件如何到达第一个
elif
。请每个问题问一个问题。