Could someone help me to find out what is going on here? I wanted to get any number followed by "m" or "y"
Why is that re.search() works correctly, meanwhile re.findall() fails while searching on the string?
a = ['COP' , '\t\t\t', 'Basis', 'Notl', 'dv01', '6m', '9m', '1y',
'18m', '2y', '3y', "15.6", 'mm', '4.6', '4y', '5y', '10', 'mm',
'4.6', '6y', '7y', '8y', '9y', '10y', '20y', 'TOTAL', '\t\t9.2']
rule = re.compile(r"^\d+[ym]$")
COP = [re.search(rule, entry)[0] for entry in a if (re.search(rule, entry))]
print(COP)
# OUTPUT >> ['6m', '9m', '1y', '18m', '2y', '3y', '4y', '5y', '6y', '7y', '8y', '9y', '10y', '20y']
However
rule1 = re.compile(r"\d+[ym]$")
a_str = " ".join(a)
COP1 = re.findall(rule1, a_str)
print(COP1)
# OUTPUT >> []
I tried multiple options to no avail.