【问题标题】:Syntax error for else and elifelse 和 elif 的语法错误
【发布时间】:2017-02-14 02:30:07
【问题描述】:

我正在尝试将 1500 行的文件分成元数据和数据。

这是我所拥有的:

headerLines = []
dataLines = []
for line in lineList:
    if (len(line) > 0 and (line[0] == # )) :
        headerLines.append(line)     
    elif (len(line) > 0 and (line[0] == U ):
        dataLines.append(line)
print("we have {} lines of metadata".format(len(headerLines)))
print("we have {} lines of data".format(len(dataLines)))       

#here we want to seperate the lines in the file into headerLines and dataLines

【问题讨论】:

  • 您能解释一下您遇到了什么错误吗?
  • 教授给出了前3行和后两行,我们只需要填写“if”语句,我还在“elif”上添加了缺少的括号,它没有改变任何事情,它只是一直说语法错误无效语法,小胡萝卜指向 elif。
  • 似乎是#,它是在python中注释一行的特殊字符。井号之后的所有内容都被视为已删除。
  • # 确实使该行的其余部分变为斜体,这就是他告诉我们分隔行的方式,我尝试将其放在引号中,但随后它给出了 int str 错误
  • 你太棒了,我又试了一次,它告诉我 U 是未定义的,所以我也在 u 周围添加了引号并运行它,它现在显示 24 行元数据和 1400 行数据,谢谢, 这个部分的线数是752,就说我已经为此奋斗了好几天,再次感谢!!

标签: python-3.x if-statement for-loop


【解决方案1】:

您的问题在于您的解析。换行:

    if (len(line) > 0 and (line[0] == # )) :

    if (len(line) > 0 and (line[0] == '#' )):

发生的情况是井号 (#) 被视为注释,因此它之后的所有内容都被忽略(这就是为什么它是灰色的)。我所做的就是把它改成一个字符串,这不可避免地解决了脚本的另一个问题。如果 line[0] 是一段带有 # 值的文本,那么它将被打印为字符串 '#',因此如果我们改为检查它,它将正常工作。

你为有阅读障碍的人做了一件了不起的工作,你努力学习也很好。

【讨论】:

    【解决方案2】:

    此行末尾需要')'。 像这样: elif (len(line) > 0 and (line[0] == U)):

    另一个问题: if (len(line) > 0 and (line[0] == '#' )):

    '#' 是一个运算符。就像 +/-,你不能将 'aaa' 与 +/- 进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 2014-06-30
      • 1970-01-01
      • 2022-10-01
      • 2022-11-13
      • 2017-07-03
      • 2014-11-23
      • 2015-10-24
      相关资源
      最近更新 更多