Удалить дубли слов в строке

Тема в разделе "Регулярные выражения", создана пользователем bork75, 26 мар 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. bork75

    bork75 The Team

    Регистр.:
    21 июн 2008
    Сообщения:
    1.451
    Симпатии:
    677
    В строках идут слова через запятую и почти во всех строках есть дубли слов
    Количество повторов разное и сами слова в разброс.
    В общем, нужно почистить строки от повторов.

    Пример:
    строка1:
    слово1, слово2, слово3, слово2, слово4

    строка2:
    слово1, слово1, слово2, слово3, слово4, слово1


    Должно быть так:

    строка1:
    слово1, слово2, слово3, слово4

    строка2
    слово1, слово2, слово3, слово4
     
  2. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    База большая ?
    Если нет то можно как то так:

    PHP:
    <?php
    $file
    =file('./base.txt');
     
    for (
    $i=0$n=count($file); $i<$n$i++)
    {
    $tmp=explode(','trim($file[$i]));
    $tmp=array_unique($tmp);
    $file[$i]=implode(','$tmp);
    }
     
    file_put_contents('./base.txt'implode("\r\n"$file));
    ?>
    PS. Не проверял.... Так что не пинайте если не работает...
    А вообще суть такова берете строку разбиваете её далее уникализируете собераете и переписываете.
    С большой базой сложнее... если она конечно в файле... там построчно читать нужно.
    Так же можно функцией сделать... на входе строка на выходе она же только уникализированая:
    PHP:
    <?php
    function strUnique($str)
    {
    $tmp=explode(','trim($str));
    return 
    implode(','array_unique($tmp)."\r\n");
    }
     
    ?>
    PSS. Тоже не проверял...
     
    bork75 нравится это.
  3. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    На python
    PHP:
    def DelDuplicates(seq):
        
    seen set()
        
    seen_add seen.add
        
    return [ for x in seq if x not in seen and not seen_add(x)]
     
    def fileopen(filesPuth,SavePuth):
        for 
    Line in open(filesPuth):
            
    ListStr Line.split(',')
            
    DeleteDubl DelDuplicates(ListStr)
            
    ReturnStr ''.join(DeleteDubl)
            
    f3 open(SavePuth"a")
            
    f3.write (ReturnStr)
            
    f3.close()
     
     
    fileopen('Duplicates.txt','rezaut.txt')
     
    bork75 нравится это.
Статус темы:
Закрыта.