Python 字符串包含双引号字符
我有一些输入字符串,这些字符串里包含了字符,包括双引号和单引号 " 和 '。
B@SS$*JU(PQ
AD&^%$^@!$
%()%@@DDSFD"*")(#
ABD*E@(%J^&@
但是,当我从一个文本文件中打开这些输入并直接打印出来时,第三行的双引号 " 被打印成了 \xe2\x80\x9d。
我想做一个简单的字符计数:
B 2
@ 3
S 2
$ 3
etc.
所以我想能够输出
" 3
在上面的列表中。我是否应该把双引号替换成其他东西,这样我才能计数并打印出这个数量呢?
非常感谢。
1 个回答
12
”
这是一个表示“特殊”双引号的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