Преобразование файла.txt в таблицу символов в Python 3
Есть небольшая проблема здесь:
Пытаюсь создать свой собственный "Алфавит", который я хочу применить к своим документам.txt,.doc,.odt для их шифрования.
Я хотел спросить, как я могу преобразовать файл.txt,.doc,.odt в список символов, чтобы затем я мог изменить их один за другим для своих собственных символов "алфавитов". А затем снова конвертируйте их и сохраните.
Я пытался использовать:
c = ('test.txt')
with open(c, 'w', encoding='utf-8') as a_file:
#Here I was trying writing the entry right into the code to be written into the file
a_file.write('Neco jineho napsaneho')
for i, v in enumerate(c):
c[i] = v.replace("N", "3")
with open(c, encoding='utf-8') as a_file:
print(a_file.read())
Но так как "c" - это файл.txt, а не список, он работает и просто выдает мне эту ошибку:
c[i] = v.replace("N", "5")
TypeError: 'str' object does not support item assignment
Любая помощь будет оценена!
Ура,
J
1 ответ
Во-первых, делая это
with open(c, 'w', encoding='utf-8') as a_file:
уничтожает содержимое вашего файла сразу. Вы должны прочитать это полностью прежде, чем написать это назад
Во-вторых, for i, v in enumerate(c):
перебирает имя файла Не может работать! (что объясняет ошибку, которую вы получаете: вы пытаетесь зашифровать имя файла на месте: строки неизменяемы). Во всяком случае, не то, что вы хотите сделать...
И тебе не нужно enumerate
, Просто создайте список, используя listcomp, перебирая файл (строки файла)
with open(c, 'r', encoding='utf-8') as a_file:
lines = [v.replace("N", "3") for v in a_file]
# now write the "encrypted" file back using the same name
with open(c, 'w', encoding='utf-8') as a_file:
a_file.write('Neco jineho napsaneho')
a_file.writelines(lines)
Примечание: заменить v.replace("N", "3")
по обычаю encrypt(v)
если вы хотите более сложное шифрование.
lines = [encrypt(v) for v in a_file]
с encrypt
определяется как:
def encrypt(v):
return v.replace("N","3").replace("Z","5")
(не очень эффективно, но это всего лишь пример. Со словарем было бы лучше)