конкатенация строки с элементами списка возвращает только последний элемент - PullRequest
0 голосов
/ 26 ноября 2018

Я использую BeutifulSoup для извлечения определенных данных из html-файла, и когда я применил следующий код для получения в качестве конечного результата, то есть объединения всех элементов списка потомков тега, я получил только последний элементв тексте переменной.

        lyrics = ""
        for content in songResult.children:
            if "br" in str(content):
                continue                  
            lyrics += str(content)
        print(lyrics)

дочерние элементы - это либо теги br, либо текст внутри тега songResult.Я проигнорировал теги br и попытался использовать print(content) вместо lyrics += str(content), тогда печать прошла идеально.Я не могу выяснить происхождение проблемы.какие-либо предложения, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Убедитесь, что этот код не находится в другом цикле, чтобы «текст песни» не сбрасывался в «».Это вызвало бы описанные вами симптомы (печатание в выражении if получилось хорошо, но «текст» содержал только последнюю переменную).

0 голосов
/ 26 ноября 2018

У меня все работало нормально.Я сделал:

lyrics = ""

children = ['testbr', 'test', 'testbr2', 'test', 'testbr3']

for content in children:
    if "br" in str(content):
        continue
    lyrics += str(content)
    print('in loop'),
    print(lyrics)

print('out of loop'),
print(lyrics)

Работает ли приведенный выше фрагмент для вас, как ожидалось?

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