Разбор и замена нескольких URL из многострочной строки - PullRequest
0 голосов
/ 20 июня 2019

Для моего проекта я анализирую несколько заявок 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
...