File “.py", line 57, in decode_article
buffer = decoding_table[code - 1]
这个是出错的提示,代码附上,求改正
# 统计文章中每个字符出现的次数
def count_characters(text):
char_count = collections.Counter(text)
return char_count
def count_character(article):
char_count = {}
for char in article:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
return char_count
# 构造编码表,其中编号从0开始,按字符出现次数从大到小排列
def build_encoding_table(char_count):
encoding_table = {}
code = 0
for char, count in sorted(char_count.items(), key=lambda x: x[1], reverse=True):
encoding_table[char] = code
code += 1
return encoding_table
# 对文章进行词典编码
def encode_article(article, encoding_table):
encoded_data = []
buffer = ''
for char in article:
if buffer + char in encoding_table:
buffer += char
else:
encoded_data.append(encoding_table[buffer])
encoding_table[buffer + char] = len(encoding_table)
buffer = char
encoded_data.append(encoding_table[buffer])
return encoded_data
# 对编码结果进行解码
def decode_article(encoded_data, decoding_table):
decoded_article = ''
buffer = ''
for code in encoded_data:
if code in decoding_table:
decoded_article += decoding_table[code]
if buffer:
decoding_table[len(decoding_table)] = buffer + decoding_table[code][0]
buffer = ''
else:
buffer = decoding_table[code - 1]
decoded_article += buffer
decoding_table[len(decoding_table)] = buffer + buffer[0]
buffer = ''
return decoded_article