Просмотр полной версии : Заменить слова рандомно
Имеется текст, пример:
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
"двести килограмм картофеля сняли"
- именно с такими повторениями. Так вот, нужно чтобы каждое слово "картофеля" было заменено рандомно (произвольно)...
и должно получится что-то типо:
"двести килограмм картофеля сняли"
"двести килограмм фываавааа сняли"
"двести килограмм ывафыпрл сняли"
"двести килограмм упцуйцу сняли"
"двести килограмм ыпвпфыпвп сняли"
и т.п... думаю, смысл понятен=)))))))))
В общем, кто возьмётся и за какую плату=)) нужен такой вот автозаменщик-) или подскажите, где воспользоваться)
Благодарю!
ICQ#: 640-000-342
Набросал тут на Perl немного:
#!/usr/bin/perl
use strict;
use Getopt::Long;
my $source_file = "";
my $set_of_world = "";
my $result_file;
my @set_of_world = ();
GetOptions("source=s" => \$source_file,
"set=s" => \$set_of_world,
"result=s" =>\$result_file);
unless ($source_file && $set_of_world ) {
Usage();
}
open(fd_set, "$set_of_world");
while(<fd_set>) {
chomp $_;
push @set_of_world, $_;
}
close(fd_set);
open(fd_source, "$source_file") or die "Can't open $source_file: $!\n";
if(defined($result_file)) {
open(fd_result, ">$result_file");
}
while(<fd_source>) {
chomp $_;
my($a, $b, $c, $d) = split(' ', $_);
if(defined($result_file)) {
print fd_result "$a $b ".$set_of_world[rand @set_of_world]." $d\n";
}
else {
print "$a $b ".$set_of_world[rand @set_of_world]." $d\n";
}
}
if(defined($result_file)) {
close(fd_result);
}
close(fd_source);
sub Usage() {
print "Usage: perl ./script.pl --source=source.txt --set=set.txt [--result=result.txt]";
exit 0;
}
А что скачать - не подскажете?
ActivePerl, скачай и установи.. потом создай файл name.pl .. и запускай Пуск -> Выполнить -> cmd .. там пиши путь до скрипта и жми enter
Качаете ActivePerl (http://downloads.activestate.com/ActivePerl/releases/5.10.1.1007/ActivePerl-5.10.1.1007-MSWin32-x86-291969.msi) . Ставите. Копируете скрипт отсюда. В файлике source.txt - то, что надо поменять. В файле set.txt - набор рандомных слов. Кладете все это файло в одну папку со скриптом и запускаете:
perl script.pl --source=source.txt --set=set.txt
На консоль выпадет результат.
Если хотите, чтобы резалт падал в файл, то запускаете вот так:
perl script.pl --source=source.txt --set=set.txt --result=result.txt
Все!)
А зачем тут что-то заменять, если можно сразу генерировать то, что тебе нужно..?!
#!/usr/bin/perl
$n = 20; # нужное количество строк
$txt_do = 'двести килограмм'; # текст до рандомного слова
$txt_posle = 'сняли'; # текст после рандомного слова
open(OUT, "> out.txt");
for($i = 1; $i <= $n; $i++)
{
$rndword = join('', map(('а','б','в','г','д','е','ё','ж','з', 'и','й','к','л','м','н','о','п','р','с', 'т','у','ф','х','ц','ч','ш','щ','ь','ы', 'ъ','э','ю','я')[rand(33)], (1..7)));
print OUT $txt_do.' '.$rndword.' '.$txt_posle."\n";
}
close(OUT);
Результат:
двести килограмм фцддонм сняли
двести килограмм мчемямц сняли
двести килограмм цьэфэтю сняли
двести килограмм иъашывс сняли
двести килограмм изщюциж сняли
двести килограмм вшдтькъ сняли
двести килограмм зуёцпфж сняли
двести килограмм юмьцёць сняли
двести килограмм сэёсорй сняли
двести килограмм бгхрчьх сняли
двести килограмм нвжншэв сняли
двести килограмм епюялди сняли
двести килограмм гысъпщг сняли
двести килограмм нзлшэжю сняли
двести килограмм ъчёлвъс сняли
двести килограмм нжздеыл сняли
двести килограмм нлвлъеъ сняли
двести килограмм геяуалю сняли
двести килограмм еъёъйоы сняли
двести килограмм шиийзюэ сняли
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot