代码之家  ›  专栏  ›  技术社区  ›  Fiddy Bux

Python 3。x-不计算len的回车数

  •  0
  • Fiddy Bux  · 技术社区  · 7 年前

    input_file = open('/home/me/01vshort.txt', 'r')
    file_content = input_file.read()
    input_file.close()
    file_length_question = input("Count all characters (y/n)? ")
    if file_length_question in ('y', 'Y', 'yes', 'Yes', 'YES'):
        print("\n")
        print(file_content, ("\n"), len(file_content) - file_content.count(" "))
    

    它计算输出中的回车数,因此对于以下文件(01vshort.txt),我得到以下终端输出:

    Count all characters (y/n)? y
    
    0
    0 0
    1 1 1
    
     9
    

    ...或

    Count all characters (y/n)? y
    
    0
    00
    111
    
     9
    

    我已经确保代码省略了空格,并用我的输入文件测试了这一点,故意添加空格,并在有行和无行的情况下运行代码:

     - file_content.count(" ")
    

    我也很好奇为什么9的结果被1个空格缩进?输入文件仅包含以下内容(文件末尾有一个空行,示例中显示了行号):

    1. 0
    2. 0 0
    3. 1 1 1
    4. 
    

    ...或

    1. 0
    2. 00
    3. 111
    4. 
    

    谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Duncan    7 年前

    如果要忽略所有空白字符,包括制表符、换行符和其他控制字符:

    print(sum(not c.isspace() for c in file_content))
    

    会给你 6 你期待着。

    .split()

    print(len(''.join(file_content.split())))
    
        2
  •  1
  •   Laur Ivan    7 年前

    得到9是因为文件的内容可以解释为:

    file_content = "0\n0 0\n1 1 1\n"
    

    file_content.count(" ") ).

    为了只计算字符数,您可以:

    • 逐行读取文件,或

    9 : print as outlined here