Попытка выяснить, почему пустая строка добавляется в список - PullRequest
0 голосов
/ 26 июня 2019

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

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)



Ответы [ 3 ]

1 голос
/ 26 июня 2019

определите ваши 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)
0 голосов
/ 26 июня 2019

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

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

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 голосов
/ 26 июня 2019

вывод строк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 с многострочным блоком. вот почему они оба имеют это как "сходство"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...