import pandas as pd
import numpy as np
import re
df_test = pd.DataFrame(np.array([['a|b', 'b', 'c|r'], [ 'e', 'f', 'g']]), columns=['First', 'Second', 'Third'])
for elem in df_test.get('First'):
x = bool(re.search('|', elem))
if x == True:
print(elem)
Output:
a|b
e
Why does it show like that? It's considered that only the first row must be in output. No?
The issue in your code is with the regular expression pattern and how it interacts with the
re.searchfunction. In regular expressions, the vertical bar|is a special character that represents an OR operator. So when you usere.search('|', elem), it is essentially searching for an empty string or any character in the input elem.So, You need to escape the vertical bar using a backslash\because you want to match the literal character|.