1

У меня есть список предложений.Удалить дублирующее слово предложение

Я хочу иметь дело с дубликатами, как это:

  • Белой туфли женщина
  • обуви женщины белой
  • Женщин белых туфель

Я хочу, чтобы в этом:

  • Белая женская обувь

Могу ли я сделать это в Notepad ++?

Или, может быть, какое-то другое программное обеспечение?

+0

Каковы ваши полный набор требований? Как определить дубликат? Какую роль играют заглавные и строчные буквы? Как вы выбираете, какой из «дубликатов» должен храниться и который нужно отбросить? – jwpfox

+0

Как я могу сказать, Как пример 3 строки с дублирующимся словом, но в другом положении. поэтому я хочу сохранить первый появившийся и отбросить другую строку с тем же словом. Нет необходимости в верхнем и нижнем регистре. – hamsun

+0

Не нужно значит что? Что мы игнорируем? Так хорошо, что выход будет «белыми женщинами-женщинами» или «БЕЛОЙ ОБУВИ ЖЕНЩИНАМИ» независимо от ввода? – jwpfox

ответ

1

Я не думаю, что вы можете сделать такую ​​работу в NPP ,

Вот способ выполнения работы с perl, который хранит регистр и порядок первой строки.
(Спасибо @jwpfox для примера ввода).

use Modern::Perl; 

my $prev = ''; 
while(<DATA>) { 
    chomp; 
    my $str = join'',sort split' ',lc$_; 
    say $_ if $str ne $prev; 
    $prev = $str; 
} 

__DATA__ 
White shoes women 
Shoes women white 
Women white shoes 
White shoes women 
Shoes women white 
Women white shoes 
Men black boots 
Black boots men 
Boots men black 
girl yellow shirt 
yellow girl shirt 
pants blue boy 

Выход:

White shoes women 
Men black boots 
girl yellow shirt 
pants blue boy 

версия в PHP:

$s = array(
'White shoes women', 
'Shoes women white', 
'Women white shoes', 
'White shoes women', 
'Shoes women white', 
'Women white shoes', 
'Men black boots', 
'Black boots men', 
'Boots men black', 
'girl yellow shirt', 
'yellow girl shirt', 
'pants blue boy'); 

$prev = ''; 
foreach($s as $line) { 
    $list = explode(' ', strtolower($line)); 
    sort($list); 
    $str = implode('',$list); 
    if ($str != $prev) echo $line,"\n"; 
    $prev = $str; 
} 

Выход:

White shoes women 
Men black boots 
girl yellow shirt 
pants blue boy 
+0

Спасибо мужчине, но возможно ли это сделать в php? Я не знаком с perl. – hamsun

+0

@prajaprihana: Я добавил версию PHP, см. Мое редактирование. – Toto

+0

Отлично! Благодаря!! – hamsun

0

Использование опции «другое программное обеспечение».

Содержание input.txt файла:

White shoes women 
Shoes women white 
Women white shoes 
Men black boots 
Black boots men 
Boots men black 
girl yellow shirt 
yellow girl shirt 
pants blue boy 

Python 3:

sentences = [] 

with open('input.txt', mode='r') as infile: 
    for line in infile: 
     wordlist = line.split(' ') 
     words = [] 
     for word in wordlist: 
      word = word.strip() 
      words.append(word.lower()) 

     words.sort() 

     if words not in sentences: 
      sentences.append(words) 

with open('output.txt', mode='w') as outfile: 
    for sentence in sentences: 
     for word in sentence: 
      outfile.write(word + ' ') 
     outfile.write('\n') 

Содержание из output.txt файла:

shoes white women 
black boots men 
girl shirt yellow 
blue boy pants 
+0

Отлично! Большое спасибо. Это то, что я хочу сделать.Но есть ли какой-нибудь простой учебник для выполнения этого, я не знаком с фитоном. Или это возможно, если это возможно в php? Я действительно ценю твою помощь. Еще раз спасибо. – hamsun

+0

Я не могу помочь с PHP, извините. Если вы хотите установить Python для запуска вышеуказанного кода, вот ссылка на инструкции https://www.python.org/downloads/. Похоже, что Perl-вариант был больше по вашему вкусу, который на 100% хорош. – jwpfox

Смежные вопросы