前提・実現したいこと
文字列から英単語のみのリストを生成したい
例
Subject: Re: WINBENCH 3.11 help
→['Subject', 'Re', 'WINBENCH', 'help']
発生している問題・エラーメッセージ
実行した結果,以下のようなa,A,z,Zのみからなるリストが出力されました.正規表現に問題があるものと思われるのですが,原因が分かりません.
該当のソースコード
読み込まれた文字列はlinesに入っているものとします.
for line in lines: # 読み込まれたテキストデータを行単位で処理 new_string = line.strip() # line 前後の余分な文字を除去 # [^a‐z A‐Z\n]は a‐z でも A‐Z でもない任意の文字 new_string = re.sub('[^a‐zA‐Z\n]', ' ',new_string) new_string = re.sub('.', ' ', new_string) # ピリオドを半角スペースに new_string = re.sub('[0‐9]', ' ', new_string) # 数字を半角スペースに words = new_string.split() # スペースで split し、単語リストを得る print(words)
試したこと
new_string = re.sub('[^a‐zA‐Z\n]', ' ',new_string)をいったん消去して実行したところ,以下のように余分な文字が含まれますがちゃんとした単語が表示されました.おそらく問題点は正規表現の書き方にあると考えられます
補足情報(FW/ツールのバージョンなど)
Python3.8.6を使用しています.ターミナルはコマンドプロントです.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。