Maison > Questions et réponses > le corps du texte
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]))
滿天的星座2017-05-18 11:00:56
Tout d'abord, les longueurs de ces deux chaînes ne sont pas égales. "
est un caractère, et \
est également un caractère
Vous pouvez utiliser len ()
Vérifiez.
Quant à la question des chaînes, il est préférable d'indiquer la version de python"
是一个字符, \
也是一个字符
你可以用 len()
查看。
然后关于字符串什么的问题,最好说明 python 的版本
maketrans
.
maketrans
ne sont pas égales
my_substitutions = the_text.maketrans(
# If you find any of these
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'\",
# Replace them by these
"abcdefghijklmnopqrstuvwxyz ")
Code de test :
from string import translate, maketrans
def text_to_words(the_text):
"""
Return a list of words with all punctuation removed,
and all in lowercase.
"""
my_substitutions = 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
text_to_words('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~\'\测试')
sortie
['abcdefghijklmnopqrstuvwxyz', '\xe6\xb5\x8b\xe8\xaf\x95']
C'est le résultat de l'exécution de python2🎜