【问题标题】:python string including double quote character包含双引号字符的python字符串
【发布时间】:2014-06-16 02:00:21
【问题描述】:

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

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

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

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

B 2
@ 3
S 2
$ 3
etc.

所以我希望能够输出

" 3

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

非常感谢。

【问题讨论】:

    标签: python string double-quotes


    【解决方案1】:

    \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
    

    【讨论】:

    • 非常感谢,Martin - 这绝对有帮助。现在,当我将每一行解码为 utf8,然后进行字符计数时,双引号会显示为 u'\u201d' 并且它们不会再次打印。有办法解决吗?
    • 如何打印?还有,你用的是 Python2 还是 Python3?
    • 我正在使用 python 2.76,我正在为字符计数创建一个键值对字典,然后打印键。所以双引号被存储为 u'\u201d': 3,当我尝试打印键时它会抛出错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\u201d' in position 0: ordinal not在范围内(128)
    • 您是否在某处使用str 函数?你的print 代码是什么样的?
    • 你真是个天才——我一定是在玩的时候把 str(key) 放在那里的。非常感谢!!!
    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多