如何在不丢失其他字符的情况下修复错误的解码?



我的日常爱好是抓取网站并收集大量数据。 最近,我观察到一种情况,即某些捕获的数据10% Off Orders of Ã’£100格式不正确,并且包含重音字母(Ã(和一些右单引号((。

我试图使用忽略的ascii对其进行编码,但是我丢失了磅(£(符号。

>>>'10% Off Orders of Ã’£100'.encode('ascii', 'ignore').decode('utf-8')
'10% Off Orders of 100'

另外,也尝试使用latin-1,但是解码后它得到了一个新字符而不是£->ã

>>> '10% Off Orders of Ã’£100'.encode('latin', 'ignore').decode('utf-8')
'10% Off Orders of ã100'

那么,如何修复此编码并保留英镑或其他货币符号?

也许您可以通过删除除 £ 符号以外的所有非 ASCII 字符来清理字符串。

下面是执行此操作的函数示例:

def remove_non_ascii(s):
return "".join(i for i in s if any([ord(i)<128, ord(i) in [163]]))

它保留所有可打印的 ASCII 字符和井号 (163(。

>>> example = '10% Off Orders of Ã’£100'
>>> remove_non_ascii(example)
'10% Off Orders of £100'
>>>

相关内容

最新更新