从Python字符串中删除零宽度空间unicode字符

时间:2017-09-11 11:24:10

标签: python python-2.7 unicode

我在Python中有一个字符串,如下所示:

u'\u200cHealth & Fitness'

如何删除

\u200

部分来自字符串?

5 个答案:

答案 0 :(得分:29)

您可以将其编码为ascii并忽略错误:

u'\u200cHealth & Fitness'.encode('ascii', 'ignore')

输出:

'Health & Fitness'

答案 1 :(得分:12)

如果您的字符串包含Unicode字符,例如

s = "Airports Council International \u2013 North America"

然后你可以尝试:

newString = (s.encode('ascii', 'ignore')).decode("utf-8")

,输出结果为:

Airports Council International North America

Upvote if help :)

答案 2 :(得分:2)

对我来说,以下方法有效

mystring.encode('ascii', 'ignore').decode('unicode_escape')

答案 3 :(得分:1)

我只是使用replace,因为我不需要它:

varstring.replace('\u200', '')

或者您的情况:

u'\u200cHealth & Fitness'.replace('\u200', '')

答案 4 :(得分:1)

在问题的特定情况下:字符串以单个 u'\200c' 字符为前缀,解决方案就像采用不包含第一个字符的切片一样简单。

original = u'\u200cHealth & Fitness'
fixed = original[1:]

如果前导字符可能存在也可能不存在,则可以使用 str.lstrip

original = u'\u200cHealth & Fitness'
fixed = original.lstrip(u'\u200c')

同样的解决方案也适用于 Python3。从 Python 3.9 开始,str.removeprefix 也可用

original = u'\u200cHealth & Fitness'
fixed = original.removeprefix(u'\u200c')