Добавьте строку после 4 символов для каждого элемента списка в Python - PullRequest
1 голос
/ 01 марта 2020

У меня есть список, каждый элемент которого является URL-адресом с тегом <a>. Мне нужно добавить target="_blank" после <a> и перед "href=" для каждого элемента списка

list = ["<a href=\"url_1\">Title_1</a>", 
    "<a href=\"url_2\">Title_2</a>", 
    "<a href=\"url_3\">Title_3</a>", 
    "<a href=\"url_4\">Title_4</a>"]

Ответы [ 3 ]

0 голосов
/ 01 марта 2020

Вот как это сделать без регулярных выражений. Альтернатива решению @Tim Biegeleisen. Объяснение в комментариях к коду:

list = ["<a href=\"url_1\">Title_1</a>",
    "<a href=\"url_2\">Title_2</a>",
    "<a href=\"url_3\">Title_3</a>",
    "<a href=\"url_4\">Title_4</a>"]

new_list = []
# for each html string in the list
for html in list:
    # Create a new string concatenating the first 4 characters of html with  target="_blank"  and the remainder of html string
    s = html[:3] + 'target="_blank" ' + html[3:]
    new_list.append(s)

print(new_list)
0 голосов
/ 01 марта 2020

Другой вариант - использовать функцию map для выполнения добавления target:

inlist = ["<a href=\"url_1\">Title_1</a>", 
    "<a href=\"url_2\">Title_2</a>", 
    "<a href=\"url_3\">Title_3</a>", 
    "<a href=\"url_4\">Title_4</a>"]

newList = list(map(lambda elem: elem.replace('<a', '<a target="blank"'), inlist))
print(newList)

Вывод:

['<a target="blank" href="url_1">Title_1</a>', '<a target="blank" href="url_2">Title_2</a>', '<a target="blank" href="url_3">Title_3</a>', '<a target="blank" href="url_4">Title_4</a>']

Примечание : не используйте list в качестве имени переменной, поскольку это зарезервированное ключевое слово Python.

0 голосов
/ 01 марта 2020

Мы можем попробовать использовать понимание списка вместе с re.sub:

output = [re.sub(r'^<a ', '<a target="_blank" ', i) for i in list]
print(output)

['<a target="_blank" href="url_1">Title_1</a>',
 '<a target="_blank" href="url_2">Title_2</a>',
 '<a target="_blank" href="url_3">Title_3</a>',
 '<a target="_blank" href="url_4">Title_4</a>']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...