Saya menulis fail untuk memproses teks, iaitu menggantikan semua simbol dalam teks dengan ruang. Gunakan maketrans dan terjemah dalam python. Ia adalah perkara biasa apabila menggunakan fail berkod ASCII, tetapi apabila menggunakan fail UTF-8, ralat dilaporkan, menunjukkan bahawa parameter dalam maketrans tidak sama panjang, tetapi jelas panjangnya sama:
Fail "/Users/lgq/Desktop/p3.py", baris 10, dalam text_to_words
"abcdefghijklmnopqrstuvwxyz ")
ValueError: dua argumen maketrans pertama mesti mempunyai panjang yang sama
Saya telah menyemak dan ia mengatakan bahawa maketrans tidak boleh digunakan di bawah utf-8 Jadi bagaimana saya harus menggantikan aksara di bawah utf-8. Tolong beri saya nasihat.
def text_to_words(the_text):
"""
Return a list of words with all punctuation removed,
and all in lowercase.
"""
my_substitutions = the_text.maketrans(
# If you find any of these
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'\",
# Replace them by these
"abcdefghijklmnopqrstuvwxyz ")
# Translate the text now.
cleaned_text = the_text.translate(my_substitutions)
wds = cleaned_text.split()
return wds
def get_words_in_book(filename):
""" Read a book from filename, and return a list of its words."""
f = open(filename, "r", encoding = "utf-8")
content = f.read()
f.close()
wds = text_to_words(content)
return wds
book_words = get_words_in_book("alice.txt")
print("There are {0} words in the book, the first 100 are\n{1}".
format(len(book_words), book_words[:100]))
Pertama sekali, panjang kedua-dua rentetan ini tidak sama
"
ialah aksara dan\
juga merupakan aksaraAnda boleh menggunakan
len. ()
SemakBagi soalan rentetan, adalah lebih baik untuk menunjukkan versi python
"
是一个字符,\
也是一个字符你可以用
len()
查看。然后关于字符串什么的问题,最好说明 python 的版本
maketrans
maketrans
panjang parameter tidak sama