Bagaimana cara mengekstrak dua kata dari sebuah string dengan python?

Untuk mengekstrak dua kata pertama dalam string teks, Anda perlu menemukan lokasi relatif spasi kedua, lalu gunakan Fungsi Kiri

  • Untuk mengekstrak kata pertama
  • Untuk mengekstrak tiga kata pertama
  • Untuk mengekstrak empat kata pertama

Rumus

Salin rumus dan ganti "A1" dengan nama sel yang berisi teks yang ingin Anda ekstrak

=IF((LEN(A1)-LEN(GANTI(A1," ","")))<2, A1, KIRI(A1,CARI(" ",A1, TEMUKAN(" ",A1)+1)-

Contoh

Untuk mengekstrak dua kata pertama dari string teks "Cara Mengekstrak Dua Kata Pertama"

Hasilnya mengembalikan dua kata pertama "How to"

Penjelasan

Langkah 1. Untuk menemukan lokasi ruang pertama

Rumus=CARI(" ",A1)Hasil4

Langkah 2. Untuk menemukan lokasi ruang kedua

Rumus=CARI(" ",A1,CARI(" ",A1)+1)Hasil7

Langkah 3. Ambil huruf sebelum spasi kedua

Rumus=LEFT(A1,FIND(" ",A1,FIND(" ",A1)+1)-1)HasilCara

Namun, ketika string teks hanya memiliki satu atau dua kata, rumus "=LEFT(A1, FIND(" ", A1, FIND(" ", A1)+1)-1)" mengembalikan #VALUE. kesalahan. Untuk menghindari kesalahan ini, Anda perlu menggabungkannya dengan Fungsi IF

Ketika tidak ada pemisah yang diteruskan ke metode str.split(), itu membagi string input pada satu atau lebih karakter spasi

Langkah selanjutnya adalah menggunakan list slicing untuk mendapatkan N kata pertama dari string

Sintaks untuk mengiris daftar adalah my_list[start:stop:step]

Indeks start bersifat inklusif dan indeks stop bersifat eksklusif (hingga, tetapi tidak termasuk)

Indeks Python berbasis nol, jadi item pertama dalam daftar memiliki indeks 0, dan item terakhir memiliki indeks -1 atau len(my_list) - 1

Irisan str.join()0 dimulai pada indeks 0 dan naik ke, tetapi tidak termasuk indeks str.join()2. Dengan kata lain, mengembalikan dua item pertama dalam daftar

Jika Anda perlu menggabungkan N kata pertama menjadi sebuah string, gunakan metode str.join()

Metode mengambil iterable sebagai argumen dan mengembalikan string yang merupakan gabungan dari string di iterable

String metode yang dipanggil digunakan sebagai pemisah antar elemen

Kami memanggil metode str.join() pada string yang berisi spasi untuk menggabungkan daftar menjadi string dengan pemisah spasi

Dapatkan kata ke-N dalam sebuah String dengan Python

Untuk mendapatkan kata ke-N dalam sebuah string

  1. Gunakan metode str.split() untuk membagi string menjadi daftar kata
  2. Akses daftar kata di indeks N - 1

Kami menggunakan metode str.split() untuk membagi string menjadi daftar kata

Metode membagi string menjadi daftar substring menggunakan pembatas

Ketika tidak ada pemisah yang diteruskan ke metode str.split(), itu membagi string input pada satu atau lebih karakter spasi

Langkah terakhir adalah mengakses daftar kata pada indeks N - 1

Indeks Python berbasis nol, jadi item pertama dalam daftar memiliki indeks 0, dan item terakhir memiliki indeks -1 atau len(my_list) - 1

Kita juga bisa secara eksplisit memberikan spasi sebagai argumen ke metode str.split()

Sekarang metode str.split() membagi string pada setiap kemunculan spasi

Jika tidak ada argumen yang diteruskan ke metode, string akan dibagi menjadi satu atau beberapa karakter spasi. Ini termasuk spasi, tab, dan baris baru (str.split()3) karakter

Ekspresi reguler (RegEx) adalah alat yang sangat ampuh untuk memproses dan mengekstraksi pola karakter dari teks. Ekspresi Reguler cepat dan membantu Anda menghindari penggunaan loop yang tidak perlu dalam program Anda untuk mencocokkan dan mengekstrak informasi yang diinginkan

Dalam posting ini, kami akan menunjukkan kepada Anda bagaimana Anda dapat menggunakan ekspresi reguler dengan Python untuk menyelesaikan jenis masalah tertentu

Untuk melalui posting ini, pengetahuan sebelumnya tentang ekspresi reguler tidak diperlukan

Mari kita pahami bagaimana Anda dapat menggunakan RegEx untuk menyelesaikan berbagai masalah dalam pemrosesan teks. Dalam posting ini kami berfokus pada mengekstraksi kata-kata dari string

Menggunakan Ekspresi Reguler dengan Python

Untuk mulai menggunakan Ekspresi Reguler dengan Python, Anda perlu mengimpor modul

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
7 Python

import re 
_

Kami telah membagi posting ini menjadi 3 bagian yang tidak terkait satu sama lain dan Anda dapat langsung menuju ke salah satu dari mereka untuk mulai bekerja, tetapi jika Anda tidak terbiasa dengan RegEx, kami sarankan Anda mengikuti posting ini secara berurutan.

Kami akan menggunakan

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
8fungsi yang disediakan dalam modul
text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
7 di seluruh posting ini untuk menyelesaikan masalah kami. Mari kita mulai

Menggunakan "
cities_record = 'Chennai'
re.findall(cities_record, text)
_0 Operator untuk Mengekstrak semua Kemunculan Kata Tertentu

Anggaplah Anda memiliki paragraf teks berikut yang menjelaskan berbagai kota dan Anda menginginkan daftar semua kejadian untuk kota tertentu

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."

Sekarang, Anda ingin mengekstrak semua kemunculan Chennai, yang dapat Anda lakukan seperti ini

cities_record = 'Chennai'
re.findall(cities_record, text)
_

Di sini,

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
8 adalah metode di
text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
7 yang mengambil dua parameter — pertama pola yang akan dicari, dalam hal ini adalah
cities_record = 'Chennai'
re.findall(cities_record, text)
3 dan parameter kedua adalah konten di
cities_record = 'Chennai'
re.findall(cities_record, text)
4, dari mana ia akan mencari pola

Metode ini mengembalikan semua kecocokan pola yang tidak tumpang tindih, yang ada dalam variabel

cities_record = 'Chennai'
re.findall(cities_record, text)
5, dari string parameter kedua, yang ada dalam variabel
cities_record = 'Chennai'
re.findall(cities_record, text)
6 dalam kasus kami, sebagai daftar string

Oleh karena itu, sel kode di atas akan mengembalikan daftar semua kemunculan kata

cities_record = 'Chennai'
re.findall(cities_record, text)
3 dalam string kami dan karenanya akan mengembalikan daftar berikut

cities_record = 'Chennai'
re.findall(cities_record, text)
_8

Tapi tunggu sebentar. Dokumen kami memiliki Chennai yang muncul 4 kali tetapi daftar hanya menunjukkan 2. Mengapa?

Jika Anda perhatikan baik-baik di paragraf, Anda akan melihat bahwa untuk ketiga kalinya, nama kota ditulis sebagai

cities_record = 'Chennai'
re.findall(cities_record, text)
9 dengan
cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
0 dalam huruf kecil

Secara default, ekspresi reguler peka huruf besar-kecil

Jadi, bagaimana Anda menangkap

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_1 juga dalam satu langkah itu sendiri? . Anda dapat mengatur nilainya menjadi
cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_4 sebagai berikut

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)

Dengan menyetel parameter flags ke

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_5, Anda memberi tahu juru bahasa untuk mengabaikan kasus saat melakukan pencarian. Saat menjalankan kode ini, Anda akan mendapatkan output berikut

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_6

Mencari Banyak Pola

Sekarang, bersama dengan Chennai, Anda ingin mengekstrak semua kemunculan nama kota “Mumbai” dari paragraf teks ini. Anda cukup melakukan ini dengan menggunakan operator

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_7 untuk membuat pola Anda

cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)

Ini akan mengembalikan

['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']

Jadi intinya

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_7 adalah 'karakter khusus' yang memberitahu regex untuk mencari pola satu
cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
9 pola dua dalam teks yang disediakan

Bagaimana jika Anda ingin mencari kemunculan

cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
0 di dokumen Anda? . Garis miring terbalik
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
3 pada dasarnya memberitahu regex untuk membacanya sebagai karakter tanpa menyimpulkan arti khususnya

Jadi dengan pencarian ini, tidak masalah jika nama kota ditulis sebagai "mUMBAI", "MUMBAI", "CHENNAI" atau "cHENNAI" di dokumen Anda. Semua kasus ini akan ditangkap, selama ejaan kota ditulis dengan benar. Jika Anda ingin memasukkan lebih banyak kota dalam pencarian Anda, Anda dapat memasukkannya lagi menggunakan operator

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
7

Mengekstrak Kata yang Hanya Mengandung Abjad

Ada kalanya Anda ingin mengekstrak kata-kata yang hanya mengandung huruf. Contoh yang bagus untuk ini adalah jika Anda mendapatkan dokumen teks yang berisi nama semua buah dan sayuran beserta jumlah dalam kilogram yang dibeli seseorang dalam format berikut

text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"

Untuk mengekstrak hanya nama buah/sayur yang dibeli, Anda dapat membuat pola menggunakan kelas yang hanya berisi karakter. Polanya adalah sebagai berikut

words_pattern = '[a-z]+'

Dalam pola ini

cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
5 menunjukkan kelas karakter dari
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
6 hingga
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
7. Operator
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_8 menunjukkan beberapa kejadian dari kelas karakter ini. Oleh karena itu, untuk mengekstraksi nama buah dan sayuran, Anda dapat menggunakan pola sebagai berikut

re.findall(words_pattern, text, flags=re.IGNORECASE)

Anda akan mendapatkan output berikut

['Banana', 'Apple', 'Carrot', 'Radish', 'Tomato']

Karakter

cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_8 adalah karakter khusus dalam regex. Ini digunakan untuk mencocokkan 1 atau lebih pengulangan dari ekspresi reguler atau kelas sebelumnya yang dalam kasus kita adalah
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
5. Jadi itu cocok dengan 1 atau lebih pengulangan huruf kecil dan karenanya kita mendapatkan daftar di atas. Jika kita ingin menyertakan 1 atau lebih pengulangan huruf kecil dan huruf besar, kita dapat membuat pola sebagai berikut

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
0

Jadi dengan cara ini apapun tulisan buah dan sayuran kita, mereka akan ditangkap oleh pola ini bahkan tanpa menggunakan bendera

cities_record = 'Chennai'
re.findall(cities_record, text, flags=re.IGNORECASE)
5

Memahami Kelas Karakter di Regex

Tanda kurung siku adalah 'karakter khusus' dalam regex yang digunakan untuk mencocokkan sekumpulan karakter. Misalnya,

['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
_2 akan cocok dengan
['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
3,
['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
4, atau
['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
5. Dalam kasus kami, kami telah menggunakan
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
5. Karakter
['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
_7 saat digunakan di dalam
['Chennai', 'Chennai', 'chennai', 'mumbai', 'Chennai', 'Mumbai']
8, menentukan rentang karakter yang dapat dicocokkan. Ini digunakan dengan menempatkannya di antara dua karakter yang merupakan batas bawah dan atas rentang

Kelas

cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
_5 akan cocok dengan huruf ASCII huruf kecil apa pun,
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
0akan cocok dengan semua huruf kecil dari
cities_record = 'Chennai|Mumbai'
re.findall(cities_record, text, flags=re.IGNORECASE)
6 hingga
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
2 dan seterusnya. Jika Anda ingin mencocokkan
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
3 literal di dalam tanda kurung siku, Anda harus menentukannya menggunakan garis miring terbalik
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
4. Karakter backslash
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
_5 adalah karakter escape yang memberitahu regex untuk memperlakukan karakter berikut sebagai literal dan mengabaikan arti khususnya

Regex juga akan menganggap

text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
_3 sebagai literal jika digunakan sebagai karakter awal atau awal di dalam tanda kurung siku seperti ini.
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
7. Ini hanya akan cocok dengan
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
8 dan
text = "\
Banana 1.051 48.25\
Apple 1.024 180.54\
Carrot 0.524 47.20\
Radish 0.251 27.14\
Tomato 0.508 41.05"
3

Mengekstraksi Kata-kata yang Diikuti oleh Pola Tertentu

Anda akan sering menemukan masalah di mana Anda harus mengekstrak kata/pola tertentu yang diikuti oleh karakter tertentu. Contoh yang baik dari hal ini adalah ketika Anda mendapat komentar pada artikel tertentu mungkin di situs web dan Anda ingin mengekstrak semua nama pengguna/id yang diberi tag di dalamnya

Untuk kesederhanaan, mari kita asumsikan bahwa nama pengguna kita hanya boleh berisi huruf dan apa pun yang diikuti oleh

words_pattern = '[a-z]+'
0 tanpa spasi adalah nama pengguna

Mari kita ambil komentar berikut sebagai contoh teks

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
_1

Mari buat pola regex yang dapat digunakan untuk mencari semua nama pengguna yang diberi tag di komentar

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
_2

Pola ekspresi reguler ini akan menemukan dan mengekstrak semua nama pengguna yang ditandai dalam komentar, tanpa bagian

words_pattern = '[a-z]+'
0

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
_3

Output untuk ekspresi reguler di atas adalah

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
_4

Di sini, jika Anda memeriksa pola kita dengan hati-hati, kita telah meletakkan pola kita di dalam tanda kurung setelah

words_pattern = '[a-z]+'
0. Pola dengan tanda kurung mengembalikan apa pun yang biasa dicocokkan dengan ekspresi yang ada di dalam tanda kurung tetapi dimulai atau diakhiri dengan apa pun yang disebutkan di luar tanda kurung

Artinya, yang dicari dalam kasus ini adalah @ langsung diikuti oleh 1 atau lebih pengulangan huruf kecil/besar, tetapi hanya pola di dalam

words_pattern = '[a-z]+'
3 yang dikembalikan sebagai objek yang diinginkan. Jadi, jika Anda menghapus operator
words_pattern = '[a-z]+'
_3 dari ekspresi reguler kami

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
5

Anda akan mendapatkan output berikut

text = "Chennai is a beautiful city. It’s the capital of the state of Tamil Nadu. Chennai has an area close to 430 kilometer squares. Well chennai is not as large as mumbai which has an area of 603.4 kilometer squares. By road, Chennai is about 1500 kilometers away from Mumbai. Whereas, it is about 2200 kilometers away from Delhi, the capital of India."
_6

Ini adalah salah satu cara di mana Anda dapat menggunakan operator

words_pattern = '[a-z]+'
3 untuk mengekstraksi pola tertentu yang kami minati, yang terjadi bersamaan dengan beberapa pola lain yang tidak ingin kami tangkap, seperti kami ingin mengabaikan simbol
words_pattern = '[a-z]+'
0 dalam kasus kami

Untuk memahami semua komponen dasar regex dengan Python, cara terbaik untuk melakukannya adalah dengan membuka dokumentasi resmi Python 3. 8 RegEx di sini

Bagaimana Anda memisahkan dua kata dalam string Python?

Memisahkan string dengan Python cukup sederhana. Anda dapat mencapai ini menggunakan fungsi "split()" bawaan Python . Metode split() di Python memisahkan setiap kata dalam string menggunakan koma, mengubahnya menjadi daftar kata.

Bagaimana Anda mengekstrak dua kata pertama dengan Python?

Untuk mengekstrak dua karakter pertama dari daftar dengan Python, Anda dapat menggunakan [. 2] yang merupakan versi singkat dari [0. 2].

Bagaimana cara mengekstrak kata-kata tertentu dari sebuah string?

Jika kita ingin mengekstrak kata tertentu dari string dan kita tidak mengetahui posisi pasti kata tersebut, kita dapat mencari posisi kata menggunakan find() terlebih dahulu . .

Bagaimana cara mengekstrak teks tertentu dengan Python?

Cara mengekstrak bagian tertentu dari file teks menggunakan Python .
Pastikan Anda menggunakan Python 3
Membaca data dari file teks
Menggunakan "dengan terbuka"
Membaca file teks baris demi baris
Menyimpan data teks dalam sebuah variabel
Mencari teks untuk substring
Memasukkan ekspresi reguler
Menyatukan semuanya