由于项目符号列表,我有一个字符串是从阅读带有符号“•”的项目符号的 HTML 网页中获得的。请注意,该文本是来自使用 Python 2.7 的网页的 HTML 源代码urllib2.read(webaddress)
。
我知道项目符号字符的 unicode 字符为U+2022
,但我如何实际用其他东西替换该 unicode 字符?
我试着做
str.replace("•", "something")
但它似乎不起作用......我该怎么做?
将字符串解码为 Unicode。假设它是 UTF-8 编码的:
str.decode("utf-8")
调用该replace
方法并确保将 Unicode 字符串作为其第一个参数传递给它:
str.decode("utf-8").replace(u"\u2022", "*")
如果需要,编码回 UTF-8:
str.decode("utf-8").replace(u"\u2022", "*").encode("utf-8")
(幸运的是,Python 3 停止了这种混乱。第 3 步实际上应该只在 I/O 之前执行。另外,请注意调用字符串会str
隐藏内置类型str
。)
将字符串编码为 unicode。
>>> special = u"\u2022"
>>> abc = u'ABC•def'
>>> abc.replace(special,'X')
u'ABCXdef'
import re
regex = re.compile("u'2022'",re.UNICODE)
newstring = re.sub(regex, something, yourstring, <optional flags>)
试试这个。
你会得到一个普通字符串的输出
str.encode().decode('unicode-escape')
之后,您可以执行任何替换。
str.replace('•','something')
有趣的答案隐藏在答案之中。
str.replace("•", "something")
如果您使用正确的语义,它将起作用。
str.replace(u"\u2022","something")
创造奇迹 ;) ,感谢 RParadox 的提示。
如果要删除所有 \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')