• 您好,我花了几周时间学习python,现在正在学习文件。如果只有数字,但现在有了数字和单词,我已经使程序能够对文件中的数字求和。如何使其忽略单词并将其总和设为186?
def sum_numbers_in_file(filename):
    """reads all the numbers in a file and returns the sum of the numbers"""
    filename = open(filename)
    lines = filename.readlines() 
    result = 0
    for num in lines:
        result = result + int(num)
        num.rstrip()
    filename.close()
    return result

answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)

在文件中:

1
Pango
2
Whero
3
4
10
Kikorangi
20
40
100
-3
4
5
分析解答

您可以在函数内轻松添加try-except语句,使其仅适用于数字:

def sum_numbers_in_file(filename):
    """reads all the numbers in a file and returns the sum of the numbers"""
    filename = open(filename)
    lines = filename.readlines() 
    result = 0
    for num in lines:
        try:
            result = result + int(num)
            num.rstrip()
        except ValueError:
            pass
    filename.close()
    return result

answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)

或者,您可以使用isalpha方法:

def sum_numbers_in_file(filename):
    """reads all the numbers in a file and returns the sum of the numbers"""
    filename = open(filename)
    lines = filename.readlines() 
    result = 0
    for num in lines:
        num = num.rstrip()
        if not num.isalpha():
            result = result + int(num)
    filename.close()
    return result

answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)

仅当字符串不包含符号或数字时,isalpha()才返回true,因此您可以使用它来检查字符串是否为数字。也适用于十进制数字。
请注意,它还会将符号检测为数字,因此,如果该行中有符号,它将被视为一个数字,从而可能会产生错误!