###前提・実現したいこと
例えば「吾輩は猫である。名前はまだ無い。」を句点“。”(他に.?!など)で分割したいと考えてます。ただし、その句点等自体を含んでリスト化したいのです。
###発生している問題・エラーメッセージ
このような文章だとうまくいくのですが、
python
1txt = '吾輩は猫である。名前はまだ無い。' 2sen = re.findall(r'.+?(?<=[。?])', txt) 3print(sen) #-> ['吾輩は猫である。', '名前はまだ無い。']
次のような文末だと
python
1txt = '「君も車屋の猫だけに大分強そうだ。車屋にいると御馳走が食えると見えるね」' 2sen = re.findall(r'.+?(?<=[。?])', txt) 3print(sen) #-> ['「君も車屋の猫だけに大分強そうだ。']
となり、文末の一文を取りこぼしてしまいます。
自分が期待しているのは
['「君も車屋の猫だけに大分強そうだ。', '車屋にいると御馳走が食えると見えるね」']
です。
試しに、splitだと
python
1 sen = re.split(r'(?<=。)', txt) 2File "lib/python3.5/re.py", line 203, in split 3 return _compile(pattern, flags).split(string, maxsplit) 4ValueError: split() requires a non-empty pattern match.
句点等の記号と次に来る文字との間にマッチするいわゆる“アンカー”でsplitできれば良いのですがうまくいきませんでした。Rubyだとうまくいくそうです。文章を一文ごとに分割する正規表現
###試したこと
どんな記号・文字が来る文末にもマッチするように
sen = re.findall(r'.+?(?<=[。?$])', txt)
も試しましたが、ダメでした。
よろしくお願いします。
###補足情報(言語/FW/ツール等のバージョンなど)
Python 3のみです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。