解码和编码后删除异常字符

时间:2014-01-23 16:30:55

标签: python string list utf-8 replace

所以我一直在研究这个问题,到目前为止,我正在接受一个字符串并执行以下操作:

title = title.decode('windows-1252')
title = title.encode('utf-8','replace')

我的字符串如下,但可能还有其他字符未被删除。

Bus • Lorry • IT & Construction

删除了标点符号:

title = title.translate(string.punctuation)

这似乎成为(删除标点符号后):

Bus • Lorry • IT Construction

虽然现在我遇到了一个问题,我将字符串拆分并尝试将其重新加入。我把它分成了:

['Bus', '\xc3\xa2\xe2\x82\xac\xc2\xa2', 'Lorry', '\xc3\xa2\xe2\x82\xac\xc2\xa2', 'IT', 'Construction']

通过:     words = text.split('')

尝试重新加入,因为每个词都有一些词干:

text = ' '.join([stemmer.stem(word) for word in words])

然后,此时我遇到了一个问题:

  

'ascii'编解码器无法解码位置0中的字节0xc3:序数不在范围内(128)

但我从阅读网站感到困惑,我需要编码和解码,我认为我已经正确完成了....

1 个答案:

答案 0 :(得分:0)

您需要在输入数据后进行解码,将其用作unicode并仅将其编码为输出。当某些东西试图将编码的字符串变成unicode对象而不知道原始编码时,会引发UnicodeDecodeError

在你的情况下,我会尝试分割并在编码之前运行词干到UTF-8。这只需要输出或(可能)存储。