これは機能します:
>>> st='first A) you have B) and then C)'
>>> re.findall(r'[A-Z]\)',st)
['A)', 'B)', 'C)']
また:
>>> re.findall('[A-Z]\\)',st)
['A)', 'B)', 'C)']
本当にtest_file
文字列ですか?あなたが持っているものはうまくいくはずです(Pythonシェルで試してみてください)ので、私の疑いはあなたの2番目のパラメーターre.findall
です...
あなたの命名が示唆するように、それがファイルオブジェクトである場合、これを行う必要があります:
with open('file.txt','r') as f:
for line in f:
line_matches=re.findall(pattern,line)
... do something with a list of matches from that line
... next line
または、ファイル全体
with open('file.txt', 'r') as f:
contents=f.read()
file_matches=re.findall(pattern,contents,flags=re.MULTILINE)
... do something with a list of matches from the whole file
または、そのファイルのエンコーディングが間違っている可能性があります...