我有一个字符串,我是通过阅读带有子弹的页面的URL来获得的,因为项目符号列表具有“•”符号。请注意,该文本是使用Python 2.7的urllib2.read(webaddress)来自网址的html源代码。
我知道U + 2022的unicode字符,但是如何将unicode字符替换成类似的?
我试过了 str.replace(“•”,“某事”);
但它似乎不起作用......我该怎么做?
答案 0 :(得分:64)
将字符串解码为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
会影响内置类型{{ 1}}。)
答案 1 :(得分:8)
将字符串编码为unicode。
>>> special = u"\u2022"
>>> abc = u'ABC•def'
>>> abc.replace(special,'X')
u'ABCXdef'
答案 2 :(得分:1)
import re
regex = re.compile("u'2022'",re.UNICODE)
newstring = re.sub(regex, something, yourstring, <optional flags>)
答案 3 :(得分:0)
我的解决方案:替换所有\u字符
def replace_unicode_character(content: str):
content = content.encode('utf-8')
unicode_characters = set([content[m.start(0) - 1:m.start(0)] for m in re.finditer(b'\x80', content)])
for x in unicode_characters:
content = content.replace(x, b"")
return content.decode('utf-8')
答案 4 :(得分:-1)
有趣的答案隐藏在答案中。
str.replace("•", "something")
如果使用正确的语义就可以。
str.replace(u"\u2022","something")
创造奇迹;),向RParadox提示。