Скрипт массовых замен в тексте

Тема в разделе "Как сделать...", создана пользователем Kosiak, 20 май 2009.

Статус темы:
Закрыта.
  1. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    614
    Симпатии:
    73
    Необходим скрипт (желательно на PHP) делающий перестановки/подстановки в текстовом файле. Вероятно с помощью регулярок.

    Например:
    текст: (а,что) если
    на выходе: a что, а если

    текст: (воплотить,претворить,провести) в жизнь
    на выходе: воплотить в жизнь, претворить в жизнь, провести в жизнь

    текст: (по)правка
    на выходе: поправка, правка

    текст: смутчик,смутьян,зачинщик (мятежа),мятежник,
    на выходе: смутчик,смутьян,зачинщик мятежа, зачинщик,мятежник,

    Также скрипт должен уметь делать простые замены (ну этот функционал есть в любом текстовом редакторе:(
    текст: a что, а если
    на выходе: a что; а если

    Либо удаления:
    Задаём ключ и скрипт после его обнаружения удаляет все символы с начала ключа и до конца строки.

    Это основные параметры и правила, но для большей универсальности лучше сделать скрипт настраиваемым. Список замен, а также другие параметры расположить к примеру в начале скрипта.
    Скрипт должен поддерживать возможность работы с большими файлами: не должен убиваться по таймауту и должен сохранять промежуточные результаты своей работы.

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

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Ы... синонимайзер... А нафига php-то?
     
  3. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    614
    Симпатии:
    73
    Ну а чего, Perl? С PHP я хоть сам справлюсь, а чтобы что-то на перле запустить - мне ещё нужно тонну манов выкурить. А реализовывать приложением - это очень муторно - здесь делов-то строк 40 кода на PHP (наверное).
    Это не синонимайзер, а разбор словарей (все, что мне встречались имели какие-либо дефекты, вот от них и хочу избавляться), хотя как синонимайзер использовать тоже можно будет, доработать только.
     
  4. lorien

    lorien Постоялец

    Регистр.:
    2 авг 2006
    Сообщения:
    84
    Симпатии:
    11
    Можно на python ещё - довольно простой в изучении язык.
     
  5. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    614
    Симпатии:
    73
    Да можно на чём угодно. Я написал про PHP, т.к. каждый день с ним сталкиваюсь и знаю как с ним работать - некоторые базовые моменты, с другими языками, кроме бэйсика в далёком детстве никак не связывался. На питоне так на питоне - если поможете со скриптом и покажете как с ним (с питоном) работать, только спасибо скажу :)
     
  6. lorien

    lorien Постоялец

    Регистр.:
    2 авг 2006
    Сообщения:
    84
    Симпатии:
    11
    Набросочек на python:
    Код:
    # -*- coding: utf-8 -*-
    import sys
    import random
    import re
    
    RE_CHOICE = re.compile('\(([^\)]+)\)(\s*\S+)')
    
    data = u"""
    Меня мучает вопрос.
    (А,Что) если бы люди умели (разговаривать,говорить,общаться) с птицами?
    Ну, как они делают это (по накурке,во сне).
    Они бы тогда могли (воплотить,претворить,провести) в жизнь самые дикие желания.
    Научиться (летать,парить в облаках), петь, есть червяков.
    Вот это (ерун)да!
    """
    
    def choice_processor(match):
        choices = match.group(1).split(',')
        tail = match.group(2)
    
        if len(choices) == 1:
            choices.append('')
    
        return random.choice(choices) + tail
    
    data = RE_CHOICE.sub(choice_processor, data)
    print data
    
    Далее читаешь маны и делаешь как надо :eek:)
     
  7. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    614
    Симпатии:
    73
    ЭЭЭ.... и куда это вставлять? Про питон, как я говорил уже, я знаю только то, что он есть...
     
  8. lorien

    lorien Постоялец

    Регистр.:
    2 авг 2006
    Сообщения:
    84
    Симпатии:
    11
    Ладно, забудь :)
     
  9. roddik

    roddik Колбаска

    Регистр.:
    26 янв 2007
    Сообщения:
    351
    Симпатии:
    285
    PHP:
    <?

    $a "(друг,товарищ), верь, (придет,прийдет) она - на (водку,воду,пиво) старая цена!";

    $a preg_replace_callback('#\((.+?)\)#is''sel'$a);

    echo 
    $a;

    function 
    sel($m) {
        
    $v explode(','$m[1]);
        
    $v $v[array_rand($v)];
        return 
    $v;
    }

    ?>
    ладно, пусть не совсем то, что надо, но направление правильное)
     
    Construktor и Kosiak нравится это.
  10. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    614
    Симпатии:
    73
    Да, может быть...
    Но как минимум нужно, чтобы данные из файла брались, а не в скрипте прописывались...
     
Статус темы:
Закрыта.