Saya ingin fungsi Python saya untuk membagi kalimat (input) dan menyimpan setiap kata dalam daftar. Kode saya saat ini membagi kalimat, tetapi tidak menyimpan kata-kata sebagai daftar. Bagaimana aku melakukan itu?
def split_line(text):
# split the text
words = text.split()
# for each word in the line:
for word in words:
# print the word
print(words)
python
list
split
text-segmentation
Terima kasih
sumber
sumber
print(word)
sebagai baris terakhir Anda.Jawaban:
Ini harus cukup untuk menyimpan setiap kata dalam daftar.
words
sudah daftar kata-kata dari kalimat, sehingga tidak perlu untuk loop.Kedua, ini mungkin salah ketik, tetapi lingkaran Anda sedikit kacau. Jika Anda benar-benar ingin menggunakan append, itu akan menjadi:
tidak
sumber
Pisahkan string dalam
text
menjalankan spasi kosong berurutan.Membagi string di
text
atas pembatas:","
.Variabel kata-kata adalah a
list
dan berisi kata-kata daritext
split pada pembatas.sumber
str.split ()
sumber
Bergantung pada apa yang Anda rencanakan untuk dilakukan dengan kalimat sebagai daftar, Anda mungkin ingin melihat Natural Language Took Kit . Ini sangat berkaitan dengan pemrosesan teks dan evaluasi. Anda juga dapat menggunakannya untuk menyelesaikan masalah Anda:
Ini memiliki manfaat tambahan untuk mengeluarkan tanda baca.
Contoh:
Ini memungkinkan Anda untuk memfilter tanda baca apa pun yang tidak Anda inginkan dan hanya menggunakan kata-kata.
Harap perhatikan bahwa penggunaan solusi lain
string.split()
lebih baik jika Anda tidak berencana melakukan manipulasi kalimat yang rumit.[Diedit]
sumber
split()
bergantung pada white-space sebagai pemisah, sehingga akan gagal untuk memisahkan kata-kata yang ditulis dgn tanda penghubung - dan frasa yang dipisahkan dengan tanda hubung panjang akan gagal untuk terpecah juga. Dan jika kalimat itu mengandung tanda baca tanpa spasi, itu akan gagal untuk tetap. Untuk parsing teks dunia nyata (seperti untuk komentar ini), saran nltk Anda jauh lebih baik daripada split () `.','
dan"'s"
bukan kata-kata. Biasanya, jika Anda ingin membagi kalimat di atas menjadi "kata-kata" dengan tanda baca-sadar, Anda ingin menghapus koma dan mendapatkan"fox's"
sebagai kata tunggal.Bagaimana dengan algoritma ini? Membagi teks pada spasi putih, lalu potong tanda baca. Ini dengan hati-hati menghilangkan tanda baca dari tepi kata-kata, tanpa merusak apostrof dalam kata-kata seperti
we're
.sumber
e.g.
danMrs.
, dan tanda titik tertinggal di posesiffrogs'
(seperti dalamfrogs' legs
) adalah bagian dari kata, tetapi akan dilucuti oleh algoritma ini. Menangani singkatan dengan benar dapat secara kasar dicapai dengan mendeteksi inisialisasi titik-terpisah ditambah menggunakan kamus kasus khusus (sepertiMr.
,Mrs.
). Membedakan tanda kutip posesif dari kutipan tunggal secara dramatis lebih sulit, karena membutuhkan penguraian tata bahasa kalimat di mana kata itu terkandung.The
str().split()
Metode melakukan hal ini, dibutuhkan string, membagi ke daftar:Masalah yang Anda alami adalah karena kesalahan ketik, Anda menulis
print(words)
alih-alihprint(word)
:Mengganti nama
word
variabel menjadicurrent_word
, inilah yang Anda miliki:..when yang seharusnya Anda lakukan:
Jika karena alasan tertentu Anda ingin membuat daftar secara manual di loop for, Anda akan menggunakan
append()
metode daftar , mungkin karena Anda ingin huruf kecil semua kata (misalnya):Atau lebih rapi, menggunakan daftar-pemahaman :
sumber
shlex memiliki
.split()
fungsi. Ini berbeda daristr.split()
yang tidak mempertahankan kutipan dan memperlakukan frase yang dikutip sebagai satu kata:sumber
Jika Anda ingin semua karakter kata / kalimat dalam daftar, lakukan ini:
sumber
Saya pikir Anda bingung karena kesalahan ketik.
Ganti
print(words)
denganprint(word)
di dalam lingkaran Anda untuk setiap kata dicetak pada baris yang berbedasumber