我正在处理在插入数据库时以错误编码记录的数据。结果,我最终得到这样的数据,例如:
'Je suistrÃ?s content,merci。'
因此,我使用str.replace()在数据列中将'Ã@'更改为'é',将'ç'更改为'ç',到目前为止,它仍然可以正常工作。
但是当我替换Ã时?用'é',我得到以下结果:
'écéeététéeééféoénécétéiéoénéénéeééméaérécéh...éçéaéénéeééméaérécéhéeéépéaésé
该函数看到字符'Ã?'在每个字母之间,
一种解决方案是使用replace()函数代替str.replace()函数,后者可以通过for循环应用于数组的每一行。但是,当数据量变大时,此功能太长。另一方面,str.replace()函数可以在几秒钟内起作用。我尝试使用utf8和latin1导入数据,但没有任何变化。
有人知道如何解决该问题吗?
我认为正在发生的事情是您在替换查询中使用文字字符串'Ã?'
,例如
s.str.replace('Ã?', 'é')
Series.str.replace
的默认行为是将第一个示例解释为regular expression。从pandas.Series.str.replace
docs:
[当pat是字符串并且regex为True(默认值)时,给定的pat被编译为regex。
要搜索字符串文字pandas.Series.str.replace
,请在对'Ã?'
的调用中包含标志regex=False
,或使用反斜杠转义问号:str.replace
:
'Ã\?'