Python 지정된 단어를 포함하는 문장을 추출하는 함수

목차



1, 내용
2, 코드
3, 끝에

내용



어느 문장으로부터 지정의 단어를 포함한 문장을 누키 내고 싶어, 번창하고 있던 여름의 생각으로.
오산이 되어 레벨업한 결과, 드디어 완전체가 되었습니다.
글쎄, 일단 코드를 실행하고 미소.

코드



기능
import re
def extract_sentence_by_match_word(base_sentence, match_word, stop_signs):
    # 指定の単語以前をstop_signsまで抽出する
    get_back_sentence = re.search(f"(.*)(?={match_word})(.*?)({stop_signs})", base_sentence).group()

    # 抜き出した単語を逆順にする
    rev_sentence = get_back_sentence[::-1]

    # 逆順にし、stop_signsから次のstop_signsまで抽出する
    get_rev_sentence = re.search(f"({stop_signs})(.*?)({stop_signs})", rev_sentence).group()

    # もう一度逆順にし、base_sentenceから除外したい文章を抽出する
    extract_words = get_rev_sentence[::-1]
    return extract_words

코드를 움직이면 상당히 이해하기 쉽다

샘플 코드



샘플 코드
## 対象の文章
base_sentence = """
オートアート

77425 1/18 西部警察 「マシンRS-1」 放送開始40周年記念モデル 
画像はメーカーの見本です。
(2019年 12月以降発売・入荷日が分かり次第、ご連絡させて頂きます。) 
(発売日が延期となる場合がございます。発売日が延期となった場合は、連絡掲示板でご連絡させて頂きます。) 
(落札後1週間以内にオーダーフォーム入力して下さい。)
(落札後1週間以内にオーダーフォーム入力が無い場合は落札者都合での取消となります。)
(お支払い方法ですが、Yahoo!かんたん決済かジャパンネット銀行でのお支払いの場合は、落札後1週間以内にお支払い下さい。) 
(予約商品となります。落札後キャンセル対応はできませんので、あらかじめご了承下さい。) 


 1979年10月の第一作テレビシリーズ放送開始から数えて2019年でちょうど40年、今なお絶大な人気を誇るアクション刑事ドラマ「西部警察」。劇中に登場したスーパー・パトカー「RS軍団」は、当時の最強モデル「日産 スカイライン(DR30)」をベースに最高時速250km/hオーバーにまで改造され、ドラマでの重要な役割を果たしその人気を支えました。今回多くのご要望にお応えし、オートアートの1/18スケールモデルとして2014年に発売後即完売となった「RS軍団」最速の『マシンRS-1』が約5年ぶりに登場。再モデル化にあたっては、新品番とし、再度入念な資料検証を行いモデル各部を改良、内外装のスペシャルパーツもよりリアルに再現しました。フル開閉モデルならではのギミックも存分にお楽しみ頂けます。さらに放送開始40周年を記念し、ディスプレイケース(別売)の台座に貼付したり、モデルと一緒に展示するとスペシャル感がアップする金属製の『40周年記念プレート』が付属します。 ●開閉式二連装20ミリ機銃●急加速装置アフターバーナー●ルーフ大型警光灯●メッシュホイール●エアアウトレット●エアロパーツ●フロントフォグランプ&赤色灯●助手席大型コンピューター●特殊無線機●ドライバーズシート●ステアリングホイール●「放送開始40周年記念プレート」(金属製・約10×2㎝)付属 ※この商品は日本限定発売モデルです。 石原プロモーション

定価¥24800(税抜)
"""

## 指定の単語
match_words = [
    "年",
    "税抜",
    "限定",
    "¥",
    "定価",
    "支払"
]

## 文章を区切る記号
stop_signs = [
    "【",
    " ",
    "。",
    ".$",
    "^.",
    "\n"
]
stop_signs = "|".join(stop_signs)
print("*" * 100)
print(base_sentence)
print("*" * 100)
for match_word in match_words:
    print()
    print("*" * 100)
    print(f"関連の単語 : {match_word}")
    print("抽出した文章 : ")
    print(extract_sentence_by_match_word(base_sentence, match_word, stop_signs))
    print("*" * 100)

일단 움직이는거야.

대원의 문장





여러 번 돌려서 지정된 단어를 포함하는 문장을 얻습니다.




위는 알기 쉽게하기 위해 match_word를 ★로 바꾸어 표시시키고 있습니다.
이번에 말하면【년】이라고 하는 것이 match_word이며, 그 단어의 전후의 문장을 누키 냅니다.
프로라면 한발로 지정된 단어의 전후를 누키 낼 수 있겠지만,
이나카몬의 와이에게는 모르기 때문에, 문장을 뒤집어,
시작 stop_signs에서 다음 stop_signs까지 검색했습니다.

그리고, 그 후 역순으로 하면 정상적인 문장이 돌아와서, 1건 낙착이 됩니다.

끝에



전혀 에러 대책 등은 하고 있지 않지만, 일단 종료.
이것으로 다양한 문장을 추출 및 삭제 등이 가능하게 된 것이 기쁘고,
처음으로 범용성이 있는 함수를 만들었다고 생각하고, 데이터 분석관의 도움이 되면 무엇보다.

참고 사이트
ht tp // st 등 yぃght-엔기네 r. bgs포 t. 이 m/2014/01/bぉg-포 st. HTML
h tps : //에서. 응 kmk. 메 / py 텐 - r t ch - 세아 rch

좋은 웹페이지 즐겨찾기