练习Python:打开文本文件

时间:2017-09-20 01:27:34

标签: python

“练习Python”的问题:http://www.practicepython.org/exercise/2014/12/06/22-read-from-file.html

大家好,关于打开文件和检查内容的快速问题。文件本身包含许多行,每行都有名称Darth,Luke或Lea。程序应该计算每个名称的数量。我想出了以下内容,但是当我运行该程序时,没有任何反应。

with open('PythonText.txt', 'r') as open_file:

    file_contents = open_file.readlines()
    ##Gives a list of all lines in the document##

    numberDarth = 0
    numberLea = 0
    numberLuke = 0

    numberNames = len(file_contents)-1

    while numberNames > 0:

        if file_contents[numberNames] == 'Darth':
            numberDarth = numberDarth + 1
            numberNames - 1
        elif file_contents[numberNames] == 'Lea' :
            numberLea = numberLea + 1
            numberNames - 1
        else:
            numberLuke = numberLuke + 1
            numberNames - 1

    pass

    print('Darth =' + numberDarth)
    print('Lea = ' + numberLea)
    print('Luke =' + numberLuke)

有人可以帮忙吗?我无法使用可视化工具,因为程序无法读取我的文件。

1 个答案:

答案 0 :(得分:0)

  

我无法使用可视化工具

您可以定义自己的file_contents列表...

无论如何,您可能想在其他地方查看Reading a file line by line in Python。您无需将整个文件读入列表。这对于大文件尤其糟糕。

由于您只扫描名称,因此只需选择每一行,而不是像下面那样存储其余部分。

您还有一个随机pass,它可能会退出您的代码并且不打印任何内容。事情确实发生了......你还没有打印任何其他东西。鼓励你在学习调试时打印很多东西。

所以,我可能会用字典来推荐这样的东西。

如果多个名字出现在同一行,这也会计算在内。

name_counts = {'Darth': 0, 'Lea': 0, 'Luke': 0}

with open('PythonText.txt') as open_file:
    # For all lines
    for line in open_file:
        # For all names
        for name in name_counts:
            # If the name is in this line, count it
            if name in line:
                name_counts[name] += 1

print(name_counts)