假设我们有一个doc.txt
包含以下内容的示例文件:
这是一个用于识别大写单词的测试文件。我将其创建为示例,因为问题的要求可能会有所不同。例如,像 SQL 这样的首字母缩略词应该算作大写单词吗?如果否:这应该导致八个大写单词。如果是:这应该导致九个。
如果您想计算大写(又名标题大小写)单词,但不包括首字母缩写词之类的全大写单词,您可以执行以下操作:
def count_capital_words(filename):
count = 0
with open(filename, 'r') as fp:
for line in fp:
for word in line.split():
if word.istitle():
print(word)
count += 1
return count
print(count_capital_words('doc.txt')) # 8
如果要计算全大写单词,您可以修改该函数以仅检查单词的第一个字母。请注意,该filter(None, ...)
函数将确保word
永远不是空字符串,避免IndexError
在这些情况下会抛出:
def count_capital_words(filename):
count = 0
with open(filename, 'r') as fp:
for line in fp:
for word in filter(None, line.split()):
if word[0].isupper():
count += 1
return count
print(count_capital_words('doc.txt')) # 9
如果你有更复杂的需求,你可以得到一个这样的迭代词:
from itertools import chain
def get_words(filename):
with open(filename, 'r') as fp:
words = chain.from_iterable(line.split() for line in fp)
yield from words