python - Python 3 - 计算文本文档中的字母/单词/快速问题
问题描述
我想知道如何在不使用任何集合的情况下获得与我在下面列出的代码相同的结果,或者让某人解释 Counter 集合内部发生的事情(以代码或以不混淆的方式),因为我似乎无法在任何地方找到它。此代码用于读取名为 juliet.txt 的文本文件。我试图让它计算文档中的字母和空格的数量,然后将其打印出来。
代码:
from collections import Counter
text = open('juliet.txt', 'r').read()
letters = 0
counter = Counter(text)
spacesAndNewlines = counter[' '] + counter['\n']
while letters < len(text):
print (text[letters])
letters += 1
while letters == len(text):
print (letters)
letters += 1
print (spacesAndNewlines)
解决方案
对我来说听起来像是一个家庭作业问题,在这种情况下,我回答你不会对你有任何好处。
letters = {}
with open('juliet.txt') as fh:
data = fh.read()
for char in data:
if char in letters:
letters[char] = 1
else:
letters[char] += 1
print(letters)
这使用标准字典 - 通常我会使用 adefaultdict
但由于某些奇怪的原因你不喜欢collections
. 有了 ,defaultdict
您就不需要进行费力的测试来查看 是否char
已经在字典中了。
推荐阅读
- wordpress - 使嵌入式 Youtube 视频自动播放静音
- java - java.lang.IllegalStateException: PCF
- python - Django不显示图像
- plotly - 在 Jupyter 和导出的 PDF 或 PNG 中绘制不同的 LaTeX 字体
- html - 使用jinja2在表格中多行
- c# - 实现指纹登录到 .NET MVC WebApp
- java - “模拟”外部程序读取/保存文件,防止 File#delete()
- node.js - MongoBD $arrayElemAt 返回错误值
- python - 获取记录中数组的最大值 - Pymongo
- c# - Image' is an ambiguous reference between 'System.Drawing.Image' and 'iText.Layout.Element.Image'