【问题标题】:Counting Lines and numbering them计算行数并给它们编号
【发布时间】:2012-03-13 20:22:26
【问题描述】:

另一个问题。

该程序对代码中的每一行进行计数和编号,除非它具有哈希标记或该行为空。除了散列标签,我得到了它对每一行的编号。我怎样才能阻止它计算空行?

  def main():

    file_Name = input('Enter file you would like to open: ')

    infile = open(file_Name, 'r')

    contents = infile.readlines()
    line_Number = 0
    for line in contents:
        if '#' in line:
            print(line)
            if line == '' or line == '\n':
                print(line)
        else:
            line_Number += 1 
            print(line_Number, line)

    infile.close()

main()

【问题讨论】:

    标签: python file line string


    【解决方案1】:

    您检查if 子句中的line == '' or line == '\n' 是否为'#' in line,它不可能是True。 基本上,您需要将if line == '' or line == '\n': 行移到左侧:)

    此外,您可以将这两种情况结合起来,因为您执行相同的操作:

    if '#' in line or not line or line == '\n':
        print line
    

    但实际上,您为什么需要打印空字符串或'\n'

    编辑: 如果其他情况如line == '\t' 也应该以同样的方式处理,最好使用 Tim 的建议并执行:if '#' in line or not line.strip()

    【讨论】:

    • 如果line == '\n'not line 将不是True。使用if '#' in line or not line.strip() 可能会更好,它也会将仅空白行视为空行。
    • 谢谢@TimPietzcker。这也将涵盖'\t',可能还有更多符号。最有可能的是,这将是期望的行为;我在最后添加了一条注释。
    【解决方案2】:

    您可以通过将以下内容添加到 for 循环的开头来跳过空行:

    if not line:
        continue
    

    在 Python 中,空字符串的计算结果为布尔值 True。万一,这意味着跳过空行,因为这个 if 语句仅在字符串为空时为 True。

    语句 continue 表示代码将在下一次循环中继续。它不会在该语句之后执行代码,这意味着您的计算行数的代码将被跳过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2014-06-17
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多