<pre>import os, sys, codecs
from collections import defaultdict
letters = 'abcdefghijklmnopqrstuvwxyz'
bigLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def countLetters(file):
results = defaultdict(int)
for line in file:
for char in line:
if char.lower() in letters:
c = char.lower()
results[c] += 1
return results
def main():
file = codecs.open('szyfrogram.txt','r',encoding='utf-8')
content = file.readlines()
file.close()
dictionary = countLetters(content)
most_popular = (max(dictionary, key=dictionary.get))
shift_for_a = 122 - ord(most_popular.lower()) + 1
saveDecoded(content, shift_for_a,'results_decoded.txt')
def saveDecoded(encoded, shift,file_output):
decoded = ''
for line in encoded:
line = line.strip('\n')
for char in line:
decoded = decoded + move(char,shift)
output = open(filr_output,mode = 'w')
output.write(decoded)
output.close
def move(letter,shift):
moveletter = letter
if letter in letters:
lower_range = 96
top_range = 122
moveCharLetters = ord(letter) + shift
if moveCharLetters > top_range:
moveCharLetters = lower_range + moveCharLetters-top_range
moveletter = chr(moveCharLetters)
else:
moveletter = chr(moveCharLetters)
elif letter in bigLetters:
lower_range = 64
top_range = 90
moveCharLetters = ord(letter) + shift
if moveCharLetters > top_range:
moveCharLetters = lower_range + moveCharLetters-top_range
moveletter = chr(moveCharLetters)
else:
moveletter = chr(moveCharLetters)
else:
moveletter = letter
return moveletter
print('countLetters')
main()<code>
回溯(最近通话最后一个): 文件 “C:\用户\瓦尔德马\应用程序数据\本地\程序\ Python的\ Python35-32 \ Rot14.py” 61行,在 main() 文件“C:\ Users \ waldemar \ AppData \ Local \ Programs \ Python \ Python35-32 \ Rot14.py”,第18行,主要内容为 content = file.readlines() 文件“C:\ Users \ waldemar \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ codecs.py“,第706行,在readlines中 return self.reader.readlines(sizehint) 文件”C:\ Users \ waldemar \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ codecs.py“,第615行,在readlines中 data = self.read() 文件“C:\ Users \ waldemar \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ codecs.py”,第501行,在读 newchars,decodedbytes = self.decode(data,self.errors) UnicodeDecodeError:'utf-8'编解码器无法解码位置28中的字节0xea:无效延续字节 如何修复错误
你可以在文章中包含你的代码作为文本(只需要缩进它的另外4个字符,这样格式化程序使它成为一个不错的块),而不是将它链接为图像。 –
在您的问题中包含代码。 – zondo
你确定你的源文件是utf-8编码,而不是拉丁文或其他? – antikantian