包含双引号字符的python字符串

时间:2014-06-16 02:00:22

标签: python string double-quotes

我输入的字符串由字符组成,包括双引号和单引号"和'

B@SS$*JU(PQ
AD&^%$^@!$
%()%@@DDSFD"*")(#
ABD*E@(%J^&@

但是,当我从文本文件打开上面的输入并打印它时,双引号"在第三行打印为\ xe2 \ x80 \ x9d

我的目标是做一个简单的字符计数:

B 2
@ 3
S 2
$ 3
etc.

所以我希望能够输出

" 3

在上面的列表中。我应该用一些东西替换双引号,以便我可以计算它们并打印掉计数吗?

非常感谢。

1 个答案:

答案 0 :(得分:9)

  

\ 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