Python

Добрый день, помогите, пожалуйста, написать код к задаче на питоне

Дан символьный файл. Произвести «сжатие» этого файла, заменив каждую
последовательность из нескольких вхождений одного и того же символа записью
вида x’k’, где x – число вхождений символа k в исходную последовательность
Ввод / вывод можно оставить и тем, который сгенерировала нейросеть выше. А вот само "сжатие" элементарно делается регулярками:
 import re 
compressed_text = re.sub(r'(.)\1+', lambda x: "%d'%s'" % (len(x[0]), x[1]), text)
Юра Поросюк
Юра Поросюк
52 458
Лучший ответ
Здравствуйте! Вот пример кода на Python, который решает данную задачу:
 
with open("input.txt", "r") as file: # открытие файла на чтение
text = file.read() # чтение всего содержимого файла в переменную text

compressed_text = "" # переменная для хранения сжатого текста
current_char = text[0] # текущий символ, начинаем со второго
char_count = 1 # количество вхождений текущего символа

for char in text[1:]: # перебираем все остальные символы текста
if char == current_char: # если текущий символ повторяется
char_count += 1 # увеличиваем счетчик вхождений
else: # если текущий символ отличается от предыдущего
if char_count > 1: # если количество вхождений больше 1
compressed_text += f"{current_char}'{char_count}'," # добавляем в сжатый текст
else: # если количество вхождений равно 1
compressed_text += current_char # просто добавляем текущий символ
current_char = char # обновляем текущий символ и счетчик вхождений
char_count = 1

# после завершения цикла добавляем оставшиеся символы в сжатый текст
if char_count > 1:
compressed_text += f"{current_char}'{char_count}'"
else:
compressed_text += current_char

# записываем сжатый текст в файл
with open("output.txt", "w") as file:
file.write(compressed_text)

В данном примере предполагается, что исходный текст находится в файле "input.txt", а сжатый текст будет записан в файл "output.txt". Разделителем между сжатыми последовательностями добавляется запятая. Если в исходном тексте есть символ запятой, то для правильного разбора сжатого текста этот символ нужно будет экранировать. Если это не требуется, можно просто изменить разделитель на другой символ (например, пробел).
Shamsiddin Habibulloev
Shamsiddin Habibulloev
14 273
Михаил Смирнов Заколебали со своим чатботом