将表示文件名的字符串作为参数的函数。函数返回txt文件中的字母数

时间:2015-04-29 03:52:23

标签: python

我需要编写一个函数,它接受一个表示filename作为参数的字符串,例如letter_count( 'alphabet.txt')。 该函数应该打开文件并返回它包含的字母数(不是数字或其他字符)。

很抱歉包括doctest,但我认为这有助于让尝试实现的目标更加明显。

def letter_count(filename):
    """
    >>> letter_count("anthem.txt")
    177
    >>> letter_count("digits.txt")
    0
    >>> letter_count("phrase.txt")
    10
    """

    myfile = filename
    count = 0
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    text = myfile.readlines()
    for char in text:
        if char in letters:
            count += 1
    return count


import string 
myfile = open(filename, 'r')
myfile.close()

if __name__=="__main__":
   import doctest
   doctest.testmod(verbose=True)

显然我犯了一个错误,但我无法指出,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您的文件仅在您的功能之外打开。

试试这个:

def letter_count(filename):
    count = 0
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    with open(filename) as f:
        for line in f:
            for char in line:
                if char in letters:
                    count += 1
    return count

修改:点击closer look语句with,这里非常方便。

答案 1 :(得分:0)

另一个解决方案是在函数中添加在函数中打开.txt文件的功能,例如,函数bellow会接受一个字符串,然后在函数中打开文件:

def parseCSV(A):
    file = open(A,'r')
相关问题