51

由于项目符号列表,我有一个字符串是从阅读带有符号“•”的项目符号的 HTML 网页中获得的。请注意,该文本是来自使用 Python 2.7 的网页的 HTML 源代码urllib2.read(webaddress)

我知道项目符号字符的 unicode 字符为U+2022,但我如何实际用其他东西替换该 unicode 字符?

我试着做 str.replace("•", "something")

但它似乎不起作用......我该怎么做?

4

6 回答 6

77
  1. 将字符串解码为 Unicode。假设它是 UTF-8 编码的:

    str.decode("utf-8")
    
  2. 调用该replace方法并确保将 Unicode 字符串作为其第一个参数传递给它:

    str.decode("utf-8").replace(u"\u2022", "*")
    
  3. 如果需要,编码回 UTF-8:

    str.decode("utf-8").replace(u"\u2022", "*").encode("utf-8")
    

(幸运的是,Python 3 停止了这种混乱。第 3 步实际上应该只在 I/O 之前执行。另外,请注意调用字符串会str隐藏内置类型str。)

于 2012-10-26T20:23:18.247 回答
13

将字符串编码为 un​​icode。

>>> special = u"\u2022"
>>> abc = u'ABC•def'
>>> abc.replace(special,'X')
u'ABCXdef'
于 2012-10-26T20:24:25.157 回答
3
import re
regex = re.compile("u'2022'",re.UNICODE)
newstring = re.sub(regex, something, yourstring, <optional flags>)
于 2012-10-26T20:16:42.473 回答
1

试试这个。

你会得到一个普通字符串的输出

str.encode().decode('unicode-escape')

之后,您可以执行任何替换。

str.replace('•','something')
于 2021-09-10T01:14:55.213 回答
-1

有趣的答案隐藏在答案之中。

str.replace("•", "something") 

如果您使用正确的语义,它将起作用。

str.replace(u"\u2022","something") 

创造奇迹 ;) ,感谢 RParadox 的提示。

于 2018-11-19T12:00:07.323 回答
-1

如果要删除所有 \u 字符。下面的代码给你

def replace_unicode_character(self, content: str):
    content = content.encode('utf-8')
    if "\\x80" in str(content):
        count_unicode = 0
        i = 0
        while i < len(content):
            if "\\x" in str(content[i:i + 1]):
                if count_unicode % 3 == 0:
                    content = content[:i] + b'\x80\x80\x80' + content[i + 3:]
                i += 2
                count_unicode += 1
            i += 1

        content = content.replace(b'\x80\x80\x80', b'')
    return content.decode('utf-8')
于 2021-07-23T10:26:48.457 回答