所以我正在尝试解决这个问题
编写一个程序,读取名为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))
答案 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)