Python -3, удаление BS4 ['...'] - PullRequest
0 голосов
/ 27 мая 2020

Я использую python -3, bs4 и следующий фрагмент

for result in results:
#   to find the src tag contents
#   .split('/')[-1:] removes all the text up to the final / and returns the name of the img file
    img_elem = result.a.img['src'].split('/')[-1:]

Возвращаемый текст: img_elem = ['vwTiguan_001.jpg']

Я не могу найти метод для печати img_elem = vwTiguan_001.jpg таким образом удаляются только [' и ']

Спасибо, ребята, Томми.

Ответы [ 4 ]

1 голос
/ 27 мая 2020

Попробуйте модуль python под названием ntpath вместо разделения всего пути для получения имени файла

>>> import ntpath
>>> ntpath.basename("/a/b/c.txt")
'c.txt'
0 голосов
/ 06 июня 2020

Спасибо всем, кто ответил. Я выложу код, который у меня сейчас работает.

for result in results:
img_elem = result.a.img['src'].rpartition('/')[-1] 

[-1] удаляет кавычки '' из результирующих данных

0 голосов
/ 27 мая 2020

Удаление двоеточия

Тип result.a.img['src'] - str, строка. Вы вызываете метод str.split(), который возвращает список. Это были скобки.

AFAIK в Python нет метода для типа list для возврата последнего элемента. Итак, вы застряли с прямым доступом (с использованием обозначения [i]). Как вы и подозревали, есть уловка, позволяющая получить последний элемент списка, не зная, сколько их, и это list[-1] без двоеточия (:), как предложил Джон Клементс . Остается

    img_elem = result.a.img['src'].split('/')[-1]

Распаковка

Другой способ - использовать распаковку / деструктуризацию, например

elements = [1, 2, 3, 4, 5]
first_element, *after_first = elements           # first_element=1, after_first=[2,3,4,5]
*before_last, last_element = elements            # before_last=[1,2,3,4], last_element=5
first_element, *middle, last_element = elements

В этих примерах after_first, before_last и middle все содержат список (обратите внимание на *), а их противоположные части содержат сам элемент, не будучи обернутым в список.

В вашем случае у вас будет что-то как

   *rest_of_the_path, img_elem = result.a.img['src'].split('/')
0 голосов
/ 27 мая 2020

Вы можете использовать метод замены. Просто замените скобки пустой строкой.

des = img_elem.replace("[", "").replace("]", "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...