Я пытаюсь создать чат-бота, и всякий раз, когда я пытаюсь запустить свой код, я получаю это,
строка 107, в
для строки в f:
Файл "/Users/usr/anaconda3/lib/python3.6/encodings/ascii.py", строка 26, в декодировании
вернуть codecs.ascii_decode (input, self.errors) [0]
UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xf8 в позиции 102: порядковый номер не в диапазоне (128)
Я собирался попытаться добавить,
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Однако мне сказали, что setdefaultencoding небезопасно использовать, поэтому я не удосужился попробовать это.
Ниже мой код,
import sqlite3
import json
from datetime import datetime
timeframe = '2015-01'
sql_transaction = []
connection = sqlite3.connect('/Users/usr/Desktop/fileName/RC_{}'.format(timeframe))
c = connection.cursor()
def create_table():
c.execute("""CREATE TABLE IF NOT EXISTS parent_reply
(parent_id TEXT PRIMARY KEY, comment_id TEXT UNIQUE, parent TEXT,
comment TEXT, subreddit TEXT, unix INT, score INT)""")
def format_data(data):
data = data.replace("\n", " newlinechar ").replace("\r", " newlinechar ").replace('"', "'")
return data
def find_existing_score(pid):
try:
sql = "SELECT score FROM parent_reply WHERE parent_id = '{}' LIMIT 1".format(pid)
c.execute(sql)
result = c.fetchon()
if result != None:
return result[0]
else:
return False
except Exception as e:
# print("find_parent", e)
return False
if __name__ == "__main__":
create_table()
row_counter = 0
paired_rows = 0
with open("/Users/usr/Desktop/fileName/RC_{}".format(timeframe), buffering=1000) as f:
for row in f:
row_counter += 1
row = json.loads(row)
parent_id = row['parent_id']
body = format_data(row['body'])
created_utc = row['created_utc']
score = row['score']
subreddit = row['subreddit']
comment_id = row['name']
parent_data = find_parent(parent_id)
if score >= 2:
if acceptable(body):
existing_comment_score = find_existing_score(parent_id)
if existing_comment_score:
if score > existing_comment_score:
sql_insert_replace_comment(comment_id, parent_id, parent_data, body, subreddit, created_utc, score)
else:
if parent_data:
sql_insert_has_parent(comment_id, parent_id, parent_data, body, subreddit, created_utc, score)
paired_rows += 1
else:
sql_insert_no_parent(comment_id, parent_id, body, subreddit, created_utc, score)
if row_counter % 100000 == 0:
print("Total rows read: {}, Paired rows: {}, Time: {}".format(row_counter, paired_rows, str(datetime.now())))
RC_2015-01 извлекается из zip-файла с именем RC_2015-01.bz2. Я не уверен, что это проблема.