str.replace()函数在要替换'Ã?'时不起作用用另一个字符串,如何解决问题?

问题描述 投票:0回答:1

我正在处理在插入数据库时​​以错误编码记录的数据。结果,我最终得到这样的数据,例如:

'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导入数据,但没有任何变化。

有人知道如何解决该问题吗?

pandas replace
1个回答
0
投票

我认为正在发生的事情是您在替换查询中使用文字字符串'Ã?',例如

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

'Ã\?'
© www.soinside.com 2019 - 2024. All rights reserved.