避免在pandas str.replace中使用正则表达式

Ale*_*ich 8 python regex string replace pandas

我有以下pandas数据帧.为简单起见,我们假设它只有两列:idsearch_term

id       search_term
37651    inline switch
Run Code Online (Sandbox Code Playgroud)

我做:

train['search_term'] = train['search_term'].str.replace("in."," in. ")
Run Code Online (Sandbox Code Playgroud)

期望上面的数据集不受影响,但我得到了这个数据集的回报:

id       search_term
37651    in.  in.  switch
Run Code Online (Sandbox Code Playgroud)

这意味着inl被替换为in.,ine并被替换为in.,好像我使用正则表达式,其中dot表示任何字符.

如何重新设置第一个命令,以便字面上in.替换为in.任何in未跟随点的任何一个命令,如下所示:

a = 'inline switch'
a = a.replace('in.','in. ')

a
>>> 'inline switch'
Run Code Online (Sandbox Code Playgroud)

dai*_*lab 5

0.23 或更高版本中,str.replace()有一个用于切换正则表达式的新选项。以下操作将简单地将其关闭。

df.search_term.str.replace('in.', 'in. ', regex=False)
Run Code Online (Sandbox Code Playgroud)

将导致:

0    inline switch
1         in. here
Name: search_term, dtype: object
Run Code Online (Sandbox Code Playgroud)


Ami*_*ory 1

尝试转义.

import pandas as pd

df = pd.DataFrame({'search_term': ['inline switch', 'in.here']})
>>> df.search_term.str.replace('in\\.', 'in. ')
0    inline switch
1          in. here
Name: search_term, dtype: object
Run Code Online (Sandbox Code Playgroud)