如何使用Python计算文本文档中的非字母数字?

如何使用Python计算文本文档中的非字母数字?,python,text,document,counting,non-alphanumeric,Python,Text,Document,Counting,Non Alphanumeric,这是我的密码。我很难弄清楚如何让我的程序计算非字母数字。我是一名新的编码专业的学生,所以对我放松点 infile = open("Gettysburg.txt", "r") data = infile.readlines() non_alpha_num = 0 uppercase_count = 0 lowercase_count = 0 whitespace_count = 0 digit_count = 0 for character in data: if character.is

这是我的密码。我很难弄清楚如何让我的程序计算非字母数字。我是一名新的编码专业的学生,所以对我放松点

infile = open("Gettysburg.txt", "r")
data = infile.readlines()
non_alpha_num = 0
uppercase_count = 0
lowercase_count = 0
whitespace_count = 0
digit_count = 0
for character in data:
    if character.isupper():
        uppercase_count += 1
    elif character.islower():
        lowercase_count += 1
    elif character.isspace():
        whitespace_count +=1
    elif character.isdigit():
        digit_count +=1
    if not character.isalnum() and not character.isspace():
        non_alpha_num += 1
    print("Jake's text document counter")
    print('The uppercase count is ', uppercase_count)
    print('The lowercase count is ', lowercase_count)
    print('The digit count is ', digit_count)
    print('The whitespace count is ', whitespace_count)
    print('The non alphanumeric count is ', non_alpha_num)
试一试

要排除空白,请执行以下操作:

if not character.isalnum() and not character.isspace():
    non_alpha_num += 1
编辑:以下@ShadowRanger评论: 您不是在读字符,而是在读行。请修改您的代码。

infile = open("Gettysburg.txt", "r")
data = infile.readlines()

uppercase_count=0
lowercase_count=0
whitespace_count=0
digit_count=0
non_alpha_num=0

for line in data:
    for character in line :
        if character.isupper():
            uppercase_count += 1
        elif character.islower():
            lowercase_count += 1
        elif character.isspace():
            whitespace_count +=1
        elif character.isdigit():
            digit_count +=1
        elif not character.isalnum() and not character.isspace():
            non_alpha_num += 1


print("Jake's text document counter")
print('The uppercase count is ', uppercase_count)
print('The lowercase count is ', lowercase_count)
print('The digit count is ', digit_count)
print('The whitespace count is ', whitespace_count)
print('The non alphanumeric count is ', non_alpha_num)
试一试

要排除空白,请执行以下操作:

if not character.isalnum() and not character.isspace():
    non_alpha_num += 1
编辑:以下@ShadowRanger评论: 您不是在读字符,而是在读行。请修改您的代码。

infile = open("Gettysburg.txt", "r")
data = infile.readlines()

uppercase_count=0
lowercase_count=0
whitespace_count=0
digit_count=0
non_alpha_num=0

for line in data:
    for character in line :
        if character.isupper():
            uppercase_count += 1
        elif character.islower():
            lowercase_count += 1
        elif character.isspace():
            whitespace_count +=1
        elif character.isdigit():
            digit_count +=1
        elif not character.isalnum() and not character.isspace():
            non_alpha_num += 1


print("Jake's text document counter")
print('The uppercase count is ', uppercase_count)
print('The lowercase count is ', lowercase_count)
print('The digit count is ', digit_count)
print('The whitespace count is ', whitespace_count)
print('The non alphanumeric count is ', non_alpha_num)


我可以让我的程序计数并显示数字、大写等的数量,但我不知道如何计数非字母数字字符。您可以尝试使用中的
运算符重新引用非字母数字字符数组,但似乎任何未通过这些测试的字符在默认情况下都是非字母数字集的一部分,这基本上是Sruthi所说的。这可能是复制粘贴问题,但您有一个缩进问题:最后一个elif中的代码应该缩进。(如果这些打印不应该在elif中,那么您有一个空的elif,这也是一个问题。)是的,我的代码还没有完成,所以我现在不太担心缩进。我删除了最后一行以避免混淆。嗯。。。您不是在迭代字符。您使用
readlines
初始化数据;你的循环在行上,而不是字符上。我可以让我的程序计数并显示数字、大写等的数量。但我不知道如何计数非字母数字字符。你可以尝试使用
in
运算符重新引用非字母数字字符数组,但似乎任何未通过这些测试的字符在默认情况下都是非字母数字集的一部分,这基本上是Sruthi所说的。这可能是复制粘贴问题,但您有一个缩进问题:最后一个elif中的代码应该缩进。(如果这些打印不应该在elif中,那么您有一个空的elif,这也是一个问题。)是的,我的代码还没有完成,所以我现在不太担心缩进。我删除了最后一行以避免混淆。嗯。。。您不是在迭代字符。您使用
readlines
初始化数据;你的循环在行上,而不是字符上。不知道标准库中有
isalnum()
,这太棒了!这绝对是最简单的解决方案。我更新了我的代码,但现在它说non_alpha_num未定义。@Jake在进入循环之前是否将其初始化为0?@Jake Do
non_alpha_num=0
在循环之前我尝试过,但我得到了奇怪的输出。我又更新了我的代码。不知道标准库中有
isalnum()
,这太棒了!这绝对是最简单的解决方案。我更新了我的代码,但现在它说non_alpha_num未定义。@Jake在进入循环之前是否将其初始化为0?@Jake Do
non_alpha_num=0
在循环之前我尝试过,但我得到了奇怪的输出。我再次更新了代码。