从字符串中删除\ u?

时间:2017-02-20 13:06:07

标签: python regex python-unicode unicode-escapes

我在列表中有几个'\uword'类型的单词。我想用空字符串替换'\u'。我环顾四周,但迄今为止没有任何对我有用。我尝试使用"%r"%word转换为原始字符串,但这不起作用。我也试过使用word.encode('unicode-escape'),但没有获得任何好处。有什么想法吗?

修改

添加代码

word = '\u2019'
word.encode('unicode-escape')
print(word) # error

word = '\u2019'
word = "%r"%word
print(word) # error

4 个答案:

答案 0 :(得分:3)

我假设.encode字符串方法修改了类似于列表的.sort()方法的字符串,我犯了一个错误。但根据文件

  

bytes.decode()的另一种方法是str.encode(),它返回Unicode字符串的字节表示,以请求的编码进行编码。

def remove_u(word):
    word_u = (word.encode('unicode-escape')).decode("utf-8", "strict")
    if r'\u' in word_u: 
        # print(True)
        return word_u.split('\\u')[1]
    return word

vocabulary_ = [remove_u(each_word) for each_word in vocabulary_]

答案 1 :(得分:2)

鉴于您只处理字符串。 我们可以使用字符串函数将其简单地转换为字符串。

>>> string = u"your string"
>>> string
u'your string'
>>> str(string)
'your string'

猜猜会这样做!

答案 2 :(得分:1)

如果我已正确理解,您不必使用正则表达式。试试吧:

>>> # string = '\u2019'
>>> char = string.decode('unicode-escape')
>>> print format(ord(char), 'x')
2019

答案 3 :(得分:-1)

因为您遇到编码和unicode问题,所以了解您正在使用的python版本会很有帮助。 我不知道我是否能帮到你,但这应该可以解决问题:

string = r'\uword'
string.replace(r'\u','')