我的输入字符串由字符组成,包括双引号和单引号 " 和 '
B@SS$*JU(PQ
AD&^%$^@!$
%()%@@DDSFD"*")(#
ABD*E@(%J^&@
但是,当我从文本文件打开上述输入并打印它时,第三行中的双引号 " 被打印为 \xe2\x80\x9d
我的目标是进行简单的字符计数:
B 2
@ 3
S 2
$ 3
etc.
所以我希望能够输出
" 3
在上面的列表中。我应该用一些东西替换双引号,以便我可以计算它们并打印出计数吗?
多谢。
\xe2\x80\x9d
是“特殊”双引号的 unicode 值。您可以将 UTF-8 解码为 Unicode,将其转换为“单个”Unicode 字符。
>>> print "\xe2\x80\x9d".decode("utf-8")
”
>>> len("\xe2\x80\x9d".decode("utf-8"))
1
如果您使用的是 Python 3:
>>> print(b"\xe2\x80\x9d".decode('utf8'))
”
>>> len(b"\xe2\x80\x9d".decode("utf-8"))
1
因此,对于您正在计数的文件(在 Python 2 中):
from collections import defaultdict
with open("filename", 'r') as f:
for text in f:
decoded = text.decode("utf-8")
count = defaultdict(int)
for i in decoded:
count[i] += 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)