计算python中的文本文件中的字母

时间:2016-03-16 04:27:23

标签: python python-3.x

所以我正在尝试解决这个问题

编写一个程序,读取名为text.txt的文件并将以下内容输出到 屏幕:

该文件中的字符数

该文件中的字母数

该文件中的大写字母数

该文件中的元音数量

到目前为止我已经得到了这个但是我坚持第2步这是我到目前为止所做的。

file = open('text.txt', 'r')
lineC = 0
chC = 0
lowC = 0
vowC = 0
capsC = 0
for line in file:
    for ch in line:
        words = line.split()
        lineC += 1
        chC += len(ch)
for letters in file:
        for ch in line:
print("Charcter Count = " + str(chC))
print("Letter Count = " + str(num))

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式执行此操作。查找所有出现的模式作为列表,然后查找该列表的长度。

import re
with open('text.txt') as f:
    text = f.read()
    characters = len(re.findall('\S', text))
    letters = len(re.findall('[A-Za-z]', text))
    uppercase = len(re.findall('[A-Z]', text))
    vowels = len(re.findall('[AEIOUYaeiouy]', text))

答案 1 :(得分:2)

上面的答案使用正则表达式,这是非常有用的,如果您以前没有使用它们,值得学习。 Bunji的代码也更有效,因为在Python中循环字符串中的字符相对较慢。

但是,如果您想使用Python尝试这样做,请查看下面的代码。有几点:首先,将open()包装在using语句中,当您完成时,该语句将自动调用文件close()。接下来,请注意Python允许您以各种有趣的方式使用in关键字。任何序列都可以是" in-ed",包括字符串。如果您愿意,可以用自己的字符串替换所有string.xxx行。

import string

chars = []

with open("notes.txt", "r") as f:
    for c in f.read():
        chars.append(c)


num_chars = len(chars)

num_upper = 0;
num_vowels = 0;
num_letters = 0

vowels = "aeiouAEIOU"
for c in chars:
    if c in vowels:
        num_vowels += 1
    if c in string.ascii_uppercase:
        num_upper += 1
    if c in string.ascii_letters:
        num_letters += 1

print(num_chars)
print(num_letters)
print(num_upper)
print(num_vowels)