Моя программа сравнивает два абзаца и возвращает похожие строки в списке. Поэтому разбейте все строки в списке и сравните их. Подобные строки добавляются в список. Тем не менее, результат включает в себя пустую строку. Пожалуйста, помогите мне выяснить, откуда он.

story1 = '''This is a story.
This has multiple lines.
All lines will be split.
This is the last line.
'''

story2 = '''This is a new story.
This has multiple lines.
All lines will be split.
This is the not last line.
This is a story.
'''

lines1 = story1.split("\n")
lines2 = story2.split("\n")
similarities = []

#print(lines1)
#print(lines2)

for line in lines1:
    if line in lines2:
        similarities.append(line)

print(similarities)



-1
efuzz 26 Июн 2019 в 16:16

3 ответа

Лучший ответ

Добрый день тебе, Кан.

Причина, по которой вы находите пустую строку, добавленную к вашим аналогам, заключается в том, что у вас действительно есть пустая строка в обеих ваших историях.

story1 = '''This is a story.
This has multiple lines.
All lines will be split.
This is the last line.'''

story2 = '''This is a new story.
This has multiple lines.
All lines will be split.
This is the not last line.
This is a story.'''

Выше не будет добавлять пустую строку, так как завершающий '\ n' был удален.

0
Srihari Jayaram 26 Июн 2019 в 13:22

Определите ваши Stoy1 и story2 для avoid an empty line, например:

story1 = '''This is a story.
This has multiple lines.
All lines will be split.
This is the last line.'''

Или вы можете поставить:

if line in lines2 and line != '':

Код:

story1 = '''This is a story.
This has multiple lines.
All lines will be split.
This is the last line.'''

story2 = '''This is a new story.
This has multiple lines.
All lines will be split.
This is the not last line.
This is a story.'''

lines1 = story1.split("\n")
lines2 = story2.split("\n")
similarities = []

for line in lines1:
    #if line in lines2 and line != '':
    if line in lines2:
        similarities.append(line)

print(similarities)
1
ncica 26 Июн 2019 в 13:23

Вывод строк1 и строк2:

In [2]: lines1
Out[2]:
['This is a story.',
 'This has multiple lines.',
 'All lines will be split.',
 'This is the last line.',
 '']

In [3]: lines2
Out[3]:
['This is a new story.',
 'This has multiple lines.',
 'All lines will be split.',
 'This is the not last line.',
 'This is a story.',
 '']

В обоих списках есть пустая строка, которая является результатом разделения на \ n с многострочным блоком. вот почему они оба имеют это как "сходство"

0
Avishay Cohen 26 Июн 2019 в 13:22