[英]Count number of capital letters in file Python?
我正在尝试从包含文本数据的文本文件中计算唯一大写字母的数量。 我已经完成了从文件中计算大写字母的工作,但在如何计算唯一的大写字母方面需要您的帮助。
这是我尝试过的:
with open('demo.txt') as countletter:
count = 0
text = countletter.read()
for character in text:
if character.isupper():
count += 1
print(count)
您需要跟踪已经出现的大写字母。 使用 set 是一个可行的解决方案。
letters = set()
with open('demo.txt') as countletter:
count = 0
text = countletter.read()
for character in text:
if character.isupper():
count += 1
letters.add(character)
print(count)
非常紧凑的解决方案:
with open('demo.txt') as countletter:
count = sum(character.isupper() for character in set(countletter.read()))
print(count)
使用集合解决
unique_capital_letters = set()
with open('demo.txt') as countletter:
text = countletter.read()
for character in text:
if character.isupper():
unique_capital_letters.add(character)
number_of_unique_occurrences = len(unique_capital_letters)
print(number_of_unique_occurrences)
将所有字符添加到列表中。 然后用它创建一个集合并取它的长度。 这将为您提供独特的大写字符。 像下面这样:
with open('demo.txt') as countletter:
char_list = list()
count = 0
text = countletter.read()
for character in text:
if character.isupper():
#append the capitals
char_list.append(character)
#create a set and get its length
print(len(set(char_list)))
您还需要记录所有已经出现的大写字母。
就像是
CapitalChar=''
with open('demo.txt') as countletter:
count = 0
text = countletter.read()
for character in text:
if character.isupper() and not in CapitalChar:
CapitalChar=CapitalChar + character
count += 1
print(count)
其他答案很好,只是想指出您可以使用Counter
使生活更轻松:
from collections import Counter
with open('demo.txt') as countletter:
unique = Counter(countletter.read())
unique_capital_letters = {char: count for char, count in unique.items() if char.isupper()}
这里已经发布了一些完美的答案,但为了方便起见,这里有一种非常紧凑的方法来实现它,只需使用常规 python:
with open('demo.txt') as countletter:
count = sum(character.isupper() for character in set(countletter.read()))
集合保证每个元素都是唯一的,并且使用 sum 就像我做的广告一样,每次字符为大写时都会计数
类似于@Eric 的回答,但使用map
函数代替:
with open('demo.txt') as countletter:
count = sum(map(str.isupper, set(countletter.read())))
有很多方法可以实现您的目标。 人们肯定会根据您的代码逻辑为您提供一种方法。 在这里,我为您提供了一种使用列表推导式 synthax 实现目标的新方法。
with open('demo.txt') as f:
text = f.read()
count = len(set([character for character in text if character.isupper()]))
print(count)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.