Saya mencoba memecahkan masalah di mana saya perlu menghapus teks (untuk menghilangkan semua tanda baca dan spasi) dan memasukkannya ke register yang sama.

with open("moby_01.txt") as infile, open("moby_01_clean_3.txt", "w") as outfile:
    for line in infile:
        line.lower
        ...
        cleaned_words = line.split("-")
        cleaned_words = "\n".join(cleaned_words)
        cleaned_words = line.strip().split() 
        cleaned_words = "\n".join(cleaned_words)
        outfile.write(cleaned_words)

Saya berharap output program berupa daftar kata-kata seperti dalam teks tetapi satu baris. Tapi ternyata di for loop hanya tiga baris terakhir yang diulang dan outputnya adalah daftar kata dengan tanda baca:

Call
me
Ishmael.
Some
years
ago--never
mind
how
long
precisely--having
... 
1
Nikita Kokorin 29 Mei 2019, 08:27

2 jawaban

Jawaban Terbaik

Saya akhirnya menemukan cara mengatasi masalah ini. Buku latihan (Buku Python Cepat. Edisi Ketiga. Naomi Ceder), dokumentasi Python, dan StackOverflow membantu saya.

with open("moby_01.txt") as infile, open("moby_01_clean.txt","w") as outfile:
    for line in infile:
        cleaned_line = line.lower()
        cleaned_line = cleaned_line.translate(str.maketrans("-", " ", ".,?!;:'\"\n"))
        words = cleaned_line.split()
        cleaned_words = "\n".join(words)
        outfile.write(cleaned_words + "\n")

Saya memindahkan -tanda dari argumen kata kunci z di str.maketrns(x[,y[,z]]) ke x, karena jika tidak, beberapa kata dengan -- tetap digabungkan dalam file. Untuk alasan yang sama saya menambahkan \n di outfile.write(cleaned_words)

0
Nikita Kokorin 9 September 2019, 07:27

Anda mungkin ingin mengubah ini. Anda menggunakan line lagi di sini.

cleaned_words = line.strip().split() 

Untuk

cleaned_words = cleaned_words.strip().split() 
3
Praveenkumar 29 Mei 2019, 05:29