Python 字符串包含双引号字符

5 投票
1 回答
8466 浏览
提问于 2025-04-18 09:53

我有一些输入字符串,这些字符串里包含了字符,包括双引号和单引号 " 和 '。

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

撰写回答