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

Статус
В этой теме нельзя размещать новые ответы.

bork75

The Team
Регистрация
21 Июн 2008
Сообщения
1.455
Реакции
734
В строках идут слова через запятую и почти во всех строках есть дубли слов
Количество повторов разное и сами слова в разброс.
В общем, нужно почистить строки от повторов.

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

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


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

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

строка2
слово1, слово2, слово3, слово4
 
База большая ?
Если нет то можно как то так:

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. Тоже не проверял...
 
На python
PHP:
def DelDuplicates(seq):
    seen = set()
    seen_add = seen.add
    return [ x 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')
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху