Программа поиска и замены на Python или С++

119
30 июня 2019, 03:30

Нужно написать программу, работающую по типу Поиска и Замены в Ворде. Но при этом замена должна происходить на случайно-сгенерированное слово из набора букв. То есть, у нас есть, например, следующий текст: "Дима, как у тебя дела? Надеюсь, что хорошо"

Программа должна менять все запятые в тексте на случайно-сгенерированное слово из букв (а, б, е, г, р, о).

Разумеется, символы для замены и набор букв, из которых будет происходить генерация могут быть любыми.

На данный момент есть следующий код на Python:

import random
str4 = ("аобевисом")
ls = list(str4)
z = [('. ',''.join([random.choice(ls) for x in range(5)]))]
s = input("Введите текст для замены")
for p in z: s=s.replace(p[0],p[1])
print (s)

Код частично справляется, в данном случае меняет точки с пробелом, но имеет критические недоработки

  1. Отсутствие разделителей после замены То есть, если мы вводим с клавиатуры для проверки, например: "пирожок. пончик" Он заменяет вот так: пирожокрандом-слово из буквпончик А нужно так: пирожок, рандом-слово из букв, пончик
  2. Одно и тоже слово на всю замену То есть, программа формирует случайное слово из выбранного набора букв, и далее меняет все точки с пробелом, на это слово, а нужно, чтобы точки с пробелом заменялись на новое сгенерированное слово. Постарался описать максимально понятно, думаю, программисты поймут:)

Заранее спасибо за ответы.

Answer 1

Вот такое решение устроит?

import re
import random
import itertools
searchstr=r', '
heap = ('а', 'б', 'е', 'г', 'р', 'о')
text = "Lorem ipsum, dolor sit amet, consectetur, adipiscing elit, sed do eiusmod, tempor incididunt, ut labore,"
def gen_word(heap):
    return ''.join(random.choice(list(itertools.permutations(heap))))
def callback(matchobj):
    return ", "+gen_word(heap)+", "
res = re.sub(searchstr, callback, text)
print(res)

Вот вариант результата:

Lorem ipsum, героаб, dolor sit amet, огрбае, consectetur, арегоб, adipiscing elit, баеогр, sed do eiusmod, рабгео, tempor incididunt, бегора, ut labore,

READ ALSO
Условные переменные - где ошибка?

Условные переменные - где ошибка?

Опять у меня вопрос из-за чужого вопроса - на этот раз вот этого

130
Чтения слов из файла

Чтения слов из файла

Задание следующие: пользователь вводит адрес директории и ключевое слово, моя задача найти все текстовые файлы в этой директории, которые...

153
Цикл for проходящий по итераторам

Цикл for проходящий по итераторам

Проблема: Синтаксическая конструкция цикла for для итераторов стандартна

182
Преобразование Бокса — Мюллера

Преобразование Бокса — Мюллера

Хочу воспользоваться первым вариантом этого метода, чтобы генерировать псевдослучайные числа с нормальным распределением

118