python - 我得到的结果与我在 python 中的代码不一致。需要为我的字母频率代码省略一些字符,但它们仍然出现
问题描述
我正在编写一个小东西来计算文本文件中每个字母的数量,计算它们的频率并将它们与这个进行比较,我用英文做了,没问题,但是当我换成法语文本文件时,我得到了一些奇怪的东西出现。首先这是我的代码:
from unidecode import unidecode
fhand = open('samplefr.txt')
c = dict()
total = 0
for line in fhand:
line = line.rstrip()
line = line.replace(" ","")
line = line.translate(line.maketrans('','',string.punctuation))
line = line.lower()
line = unidecode(line, "utf-8")
for words in line:
total = total + 1
c[words] = c.get(words,0)+1
print(total)
f = sorted([(v,k) for k,v in c.items()])
print(f)
for v in f:
print(v[1],'=',v[0]/total*100, '%')
这是我得到的结果我 不明白为什么字符“'<>()甚至空格都出现在结果中。感谢您的帮助。
解决方案
对于空格的问题,可能是文本包含不同类型的空格。Unicode 包含多个空格(请参阅此处),您只过滤掉这一行中的一个:
line = line.replace(" ","")
我认为其他符号可能存在同样的问题。我手动测试了您的代码,当我使用您提到的符号创建一个字符串时它可以工作。
如果没有输入文件,很难进一步研究问题。我建议您检查文件的编码。此外,查看文本中符号的 unicode 是否与您在代码中过滤掉的符号的 unicode 相同。
推荐阅读
- android - 更改日期选择器对话框中按钮栏的颜色
- ios - 用 SwiftUI 2.0 中的工具栏替换 Tabbar
- docusignapi - 从 DocuSign powerform 中删除“稍后完成”按钮
- powershell - Powershell,验证当前目录的最佳方法等于某些东西
- javascript - Larave Vue 发布请求返回 500 内部服务器错误
- material-ui - UNO 材质 BottomNavigationBar 事件处理程序
- c# - 如何将创建的类或对象传递给 AssemblyInitialize?
- django - 在单个日期获得最高数量的订单
- ruby - 面临在 ruby 中创建一对一映射的问题
- python-3.x - Python Google Slides API - 调整表格的宽度和高度以适合页面内