Как поменять местами буквы в слове(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)
→ Ссылка