Saya mencari solusi regex untuk menghapus kata apa pun di sisa kalimat setelah kemunculan frasa kunci.

Contoh

Kalimat = "Prakiraan cuaca hari ini sebagian besar cerah. Prakiraan cuaca besok akan hujan. Sisa minggu ini..."

Key_phrase = "untuk besok"

Output yang diinginkan = "Prakiraan cuaca hari ini sebagian besar cerah. Prakiraan cuaca. Sisa minggu ini..."

Berusaha

head, sep, tail = sentence.partition(key_phrase)
print(head)

Ide saya adalah pertama-tama membagi string menjadi kalimat, menerapkan teknik di atas dan kemudian menggabungkan hasilnya. Namun, saya merasa harus ada cara yang lebih elegan untuk melakukan ini dengan regex?

Terima kasih untuk bantuannya

2
Sjoseph 27 Mei 2021, 16:30

2 jawaban

Jawaban Terbaik

Menggunakan re.sub

Misalnya:

sentence = "The weather forecast for today is mostly sunny. The forecast for tomorrow will be rainy. The rest of the week..."
key_phrase = "for tomorrow"
print(re.sub(fr"({key_phrase}.*?)(?=\.)", "", sentence))

Keluaran

The weather forecast for today is mostly sunny. The forecast . The rest of the week...
2
Rakesh 27 Mei 2021, 13:36

Menggunakan

re.sub(fr"{re.escape(key_phrase)}[^.]*", "", sentence)

Lihat bukti ekspresi reguler.

Penjelasan

--------------------------------------------------------------------------------
  for                      'for'
--------------------------------------------------------------------------------
  \                        ' '
--------------------------------------------------------------------------------
  tomorrow                 'tomorrow'
--------------------------------------------------------------------------------
  [^.]*                    any character except: '.' (0 or more times
                           (matching the most amount possible))

Lihat Python bukti :

import re
sentence = "The weather forecast for today is mostly sunny. The forecast for tomorrow will be rainy. The rest of the week..."
key_phrase = "for tomorrow"
print(re.sub(fr"{re.escape(key_phrase)}[^.]*", "", sentence))

Hasil: The weather forecast for today is mostly sunny. The forecast . The rest of the week...

0
Ryszard Czech 27 Mei 2021, 20:39