Добавить пользовательский атрибут без кавычек

#python #python-3.x #beautifulsoup

#python #python-3.x #beautifulsoup

Вопрос:

Я пытаюсь добавить атрибут к HTML-тегу без кавычек, чтобы я мог добавить косую черту перед кавычками и добавить кавычки вручную.

Атрибут src должен оставаться пустым, я не могу его переименовать.

Мой текущий код выглядит следующим образом.

 data = open('data.sql')
soup = BeautifulSoup(data, 'html.parser')

for img in soup.find_all(name="img"):

    #get src
    src = img['src']

    # clear src
    img['src'] = ""

    # add new attribute
    img.attrs["data-src"] = src
    print(img.attrs["data-src"])


#save soup
with open('db.sql', "w") as file:
    file.write(str(soup))
  

Мой результат (после сохранения его в db.sql):

 <img src="" data-src='"/folder/img/image.jpg"'>
  

Что я ищу (без одинарных кавычек):

 <img src="/folder/img/image.jpg">
  

То, что я пытаюсь, это:
Загрузить в db.sql с помощью Bs4
Установить для атрибута src-data значение src
Очистить значение атрибута src
Сохранить файл в db2.sql

Ответ №1:

Используйте del для удаления атрибутов:

 for img in soup.find_all(name="img"):
    src = img['src']
    del img['src']
    img.attrs['data-src'] = src
  

Комментарии:

1. Я не собираюсь удалять атрибут src. Проблема в одинарных кавычках вокруг нового значения, они мне не нужны.

2. @JeroenR Ах, я неправильно истолковал ваш желаемый результат. Однако вокруг результирующего тега нет одинарных кавычек. Они отображаются только в вашей консоли Python, потому что именно так отображаются строки; сравните "hello" с print("hello") .

3. Я загружаюсь в файл .sql, читаю / изменяю html с помощью bs4 и переписываю его в новый файл .sql. Когда это происходит, я получаю одинарные кавычки вокруг своих значений (внутри файла sql)

4. @JeroenR Если это так, то это связано с тем, как вы пишете SQL-код, а не с вашими манипуляциями с HTML-документом. Другими словами, это не связано, и у вас будет та же проблема с исходным, неизмененным документом.

5. @JeroenR Если это действительно ваш фактический код и выходные данные, то это означает, что вложенные кавычки уже были частью исходного HTML-кода. … Я также немного озадачен, почему вы являетесь .sql расширением файла для HTML-файлов.

Ответ №2:

Решение проблемы состояло в том, чтобы перебрать строки базы данных, получить столбец с HTML внутри и создать из него soup (Bs4).