Я пытаюсь реализовать функцию Rot-13, но застрял с новыми линиями.Проблема с новой строкой в rot-13
Вот мой код:
import cgi, string
def convert():
lower = string.ascii_lowercase
upper = string.ascii_uppercase
punctuation = string.punctuation + ' '
with open('data.txt', 'r') as myfile:
s = myfile.read()
s = '%(pre_b)s%(s)s%(pre_e)s' % {'pre_b': '<pre>', 's': s, 'pre_e': '</pre>'}
s = ''.join(map(lambda x: shift(x, lower, upper, punctuation), s[5:-6]))
return cgi.escape(s, quote= True)
def shift(x, lower, upper, punctuation):
if x in punctuation:
return x
elif x.istitle():
return upper[(upper.index(x) + 13) % 26]
try:
return lower[(lower.index(x) + 13) % 26]
except:
print x
print convert()
Одностроковые предложения обрабатываются в порядке, но когда вход содержит новую строку, питон говорит TypeError: expected string, NoneType found
Содержимое файла data.txt следующая:
test
test test
Пожалуйста, помогите.
Ошибка больше, чем обычно, это, как правило, дает вам линию, а также помогает сузить ее. –
Также дайте примеры того, что терпит неудачу. Поскольку мне удалось запустить код без ошибок, но мне также удалось получить исключение, отличное от того, что вы указываете в своем вопросе, с другим вводом. – idjaw
При дальнейшем осмотре ваш код будет горячим. –