これはランダムに生成されたセンテンスをディスパッチチャットに送信するスクリプトです。しかし時にはエラーになる場合があります。UnicodeDecodeError: 'ascii' codec cant decode byte 0xef in position 2141: ordinal not in range(128)
UnicodeDecodeError: 'ascii'コーデックは、位置2141のバイト0xefをデコードできません:範囲内の序数(128)
どうすればこのエラーを解決できますか?
コード:
import asyncio
import random
import discord.ext.commands
import markovify
import nltk
import re
with open("/root/sample.txt") as f:
text = f.read()
class POSifiedText(markovify.Text):
def word_split(self, sentence):
words = re.split(self.word_split_pattern, sentence)
words = [w for w in words if len(w) > 0]
words = [" :: ".join(tag) for tag in nltk.pos_tag(words)]
return words
def word_join(self, words):
sentence = "".join(word.split("::")[0] for word in words)
return sentence
text_model = POSifiedText(text, state_size=1)
client = discord.Client()
async def background_loop():
await client.wait_until_ready()
while not client.is_closed:
channel = client.get_channel('286342556600762369')
messages = [(text_model.make_sentence(tries=33, max_overlap_total=10, default_max_overlap_ratio=0.5))]
await client.send_message(channel, random.choice(messages))
await asyncio.sleep(15)
client.loop.create_task(background_loop())
client.run("MjY2NjkwNDY4MjI4NzU5NTU4.C5jcdw.WFfBTUmAY7UcrwKTwYFJ9_bFHjI")
エラーが、私は同様の問題を抱えていたライン9
サンプルに非アスキー文字が含まれています。 'open()'呼び出しで、正しいエンコーディングを指定してください。 – alexis
[UnicodeDecodeError: 'charmap'コーデックが重複してY位置のバイトXをデコードできません:文字はにマップされます(http://stackoverflow.com/questions/9233027/unicodedecodeerror-charmap-codec-cant-decode-byte- x-in-position-y-character) –
alexis
しかしあなたの質問はnltkやビルドしているチャットボットとは関係ありません。 'nltk'のすべてのタグ付けを停止します。あなたの問題を絞り、それはGoogleのソリューションに簡単になります。 – alexis