1
votes

I'm using Python 2.7.12 and pandas 0.20.3, I have a data frame like below, I want to replace column called number, this column dtype is object, when I try to replace +91 in that column I'm getting error like below,

          number
0  +9185600XXXXX
1  +9199651XXXXX
2     99211XXXXX
3     99341XXXXX
4  +9199651XXXXX

sre_constants.error: nothing to repeat

full trace,

Traceback (most recent call last): File "encoder.py", line 21, in df['number']=df['number'].str.replace('+91','') File "/home/hduser/.local/lib/python2.7/site-packages/pandas/core/strings.py", line 1574, in replace flags=flags) File "/home/hduser/.local/lib/python2.7/site-packages/pandas/core/strings.py", line 424, in str_replace regex = re.compile(pat, flags=flags) File "/usr/lib/python2.7/re.py", line 194, in compile return _compile(pattern, flags) File "/usr/lib/python2.7/re.py", line 251, in _compile raise error, v # invalid expression sre_constants.error: nothing to repeat

But when I replace 91 it works as I expected, It's not working when I put + in prefix, Please help me to solve this problem.

Error Occurs at,

df['number']=df['number'].str.replace('+91','')

2
Pass regex=False ? eg: .str.replace('+91','', regex=False) - Jon Clements♦

2 Answers

1
votes

You can escape special regex value + (one or more repetitions) like:

df['number'] = df['number'].str.replace('\+91','')

Or use parameter regex=False:

df['number'] = df['number'].str.replace('+91','', regex=False)
1
votes
import pandas as pd
data={'number':['+9185600XXXXX','+9199651XXXXX']}
f=pd.DataFrame(data)
f['number']=f['number'].str.replace('\+91','')
print(f)