How do I avoid functions to read escape characters?

Question:

I have a list string that depicts directory paths, e.g.:

| 'directory path' |
|:----------------:|
|'c:\windows\g\subfolder1'|
|'c:\windows\g\subfolder2'|
|'etc' |

The string is perfectly valid and when I print them they come out naturally as:

print(dir_list[0])
dir_list[0]

c:windowsgsubfolder
Out[1]: 'c:\windows\g\subfolder1'

However, when I use the string in a function I get the following error:

df['directory path'].str.contains(dir_list[0])
error: bad escape g at position 10

Why do I get the error in the function when it works totally fine as a string?

Asked By: Joakim Torsvik

||

Answers:

You need to use regex=False as str.contains considers the pattern a regex by default:

df['directory path'].str.contains(dir_list[0], regex=False)

Or, if for some reason you need to keep the default regex=True, escape the characters:

import re
df['directory path'].str.contains(re.escape(dir_list[0]))

Output:

0     True
1    False
2    False
Name: directory path, dtype: bool
Answered By: mozway
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.