Для моего проекта я анализирую несколько заявок JIRA, которые имеют разные форматы текста в поле описания (иначе может измениться порядок / количество ссылок в каждой), и удаляю все ссылки, которые начинаются с определенного URL (например: www.website.com/app/client =? ................).
Я использую Python для этого.
Проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как проанализировать полные URL-адреса, поскольку длина / формат меняется каждый раз.
Я попытался использовать библиотеку re и получить совпадения до определенной части URL-адреса (например, он идет до "/ monitor", но не включает часть после "/monitor-text.random12443").
Должен ли я вместо этого использовать библиотеку urlparse? Если да, как мне заставить его идентифицировать различные URL-адреса, не включая остальную часть строки?
Краткое содержание вопроса:
Как выполнить синтаксический анализ многострочной строки, идентифицировать несколько ссылок с определенной начальной последовательностью (например, www.removethisurl.com/) и удалить / заменить всю строку, не изменяя остальное содержимое строка?
Любая помощь будет принята с благодарностью!
В качестве примера вот пример строки в поле описания:
h1. Title of this section
Random text
more random text
.
.
.
h3. URL section
Random text
description of the URL | Url that does NOT need to be changed
description of the URL | Url that does NOT need to be changed
Random text:
description of the URL | Url that DOES need to be changed
Url that DOES need to be changed
.
.
.
h3. More text
more random URLS that DO NOT need to be changed
Пример кода того, что я пробовал:
# Parse through each issue in the list
for issue in range(totalComp):
# is a dict with the following format {'customfield..' : 'URL'}
dataToChange = json_data_comp['issues'][issue]['fields']
print("Issue {} has the following componentfield_11111 entry: {}".format(issue, dataToChange))
testStr = json_data_comp['issues'][issue]['fields']['customfield_15462']
x = urlparse(testStr)
print(f'X fragment is: {x.fragment}')
rest = re.search('[^\s]+', x.fragment) # Selects up until the whitespace
print(f'X fragment is: {rest}')
Пример вывода:
Issue 23 has the following componentfield_11111 entry: {'customfield_15462': 'Production: https://www.URLtoChange.com/sv.do?id=KTy9VBJe2rgWug1BNFbCJYnyuE37TMvtPzQQbJiQpCAGtN9msOPrrcYb4DvsQiY%2FUR5WD%2FXshycb%0AxrwvH6CoPHoiIFDuVU4z Preview Texts: https://URL.to.NOT.change.com/?filter=HCPms'}
X fragment is:
X fragment is: None