我的日常爱好是抓取网站并收集大量数据。 最近,我观察到一种情况,即某些捕获的数据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'
>>>