Как поменять местами буквы в слове(1-е со 2-м, 3-е с 4-м и т.д)?
Нужно из файла получить какое-то слово(которое ещё нужно загнать в список), поменять в нём местами буквы, и результат записать в другой файл
Например, в файле лежит слово "привет", после перестановки должно получится "рпвите"
l = []
with open('text.txt', 'r', encoding='utf-8') as file:
l = file.readlines()
#перестановка букв
with open('text2.txt', 'w', encoding='utf-8') as file:
file.writelines(l)
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Можно так:
import itertools as it
with open('text.txt', encoding='utf-8') as file:
lines = file.readlines()
new_lines = []
for line in lines:
line = ''.join(s2+s1 for s1, s2 in it.zip_longest(line[::2], line[1::2], fillvalue=''))
new_lines.append(line)
with open('text1.txt', 'w', encoding='utf-8') as file:
file.writelines(new_lines)
Подожмем:
import itertools as it
with open('text.txt', encoding='utf-8') as file:
lines = file.readlines()
new_lines = [''.join(s2+s1 for s1, s2 in it.zip_longest(line[::2], line[1::2], fillvalue='')) for line in lines]
with open('text1.txt', 'w', encoding='utf-8') as file:
file.writelines(new_lines)
Или максимально сжато:
import itertools as it
with open('text.txt', encoding='utf-8') as file, open('text1.txt', 'w', encoding='utf-8') as file1:
file1.writelines(''.join(s2+s1 for s1, s2 in it.zip_longest(line[::2], line[1::2], fillvalue='')) for line in file)