J'ai écrit un fichier pour traiter le texte, qui consiste à remplacer tous les symboles du texte par des espaces. Utilisez maketrans et traduisez en python. C'est normal lors de l'utilisation de fichiers encodés ASCII, mais lors de l'utilisation de fichiers UTF-8, une erreur est signalée, indiquant que les paramètres dans maketrans ne sont pas de longueur égale, mais ils ont évidemment la même longueur :
Fichier "/Users/lgq/Desktop/p3.py", ligne 10, dans text_to_words
"abcdefghijklmnopqrstuvwxyz ")
ValueError : les deux premiers arguments maketrans doivent avoir la même longueur
J'ai vérifié et il a été dit que maketrans ne pouvait pas être utilisé sous utf-8. Alors, comment dois-je remplacer les caractères sous utf-8 ?
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]))
Tout d'abord, les longueurs de ces deux chaînes ne sont pas égales.
"
est un caractère, et\
est également un caractèreVous pouvez utiliser
len ()
Vérifiez.Quant à la question des chaînes, il est préférable d'indiquer la version de python
"
是一个字符,\
也是一个字符你可以用
len()
查看。然后关于字符串什么的问题,最好说明 python 的版本
Les longueurs des paramètresmaketrans
.maketrans
ne sont pas égales