Python как разобрать 2 URL-адреса из строки и затем отобразить их обратно? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть столбец в pandas кадре данных, где некоторые значения имеют следующий формат: «От https://....com?gclid= ... до https://...com». Я хотел бы проанализировать только первый URL-адрес, чтобы gclid и другие идентификаторы имели значение sh, и я хотел бы отобразить это в фрейме данных, например: "С https://....com до https://...com "

Я знаю, что есть модуль python, называемый urllib, но если я применяю эту строку к вызову path (), он просто анализирует первый URL и затем я теряю другую часть, которая так же важна, как и первая.

Может ли кто-нибудь помочь мне? Спасибо!

1 Ответ

1 голос
/ 30 апреля 2020

Если вы используете DataFrame, тогда используйте replace(), который может использовать регулярное выражение для поиска текста, подобного "?.... " (который начинается с ? и заканчивается space - или который начинается с ? и имеет только другие символы, отличные от space - '\?[^ ]+')

import pandas as pd

df = pd.DataFrame({'text': ["From https://....com?gclid=... to https://...com"]})

df['text'] = df['text'].str.replace('\?[^ ]+', '')

Результат

                                     text
0  From https://....com to https://...com

Кстати: Вы также можете попробовать более сложное регулярное выражение, чтобы убедиться, что оно часть URL, которая начинается с http.

df['text'] = df['text'].str.replace('(http[^?]+)\?[^ ]+', '\\1')

Я использую (...), чтобы перехватить этот URL-адрес до ?..., и помещаю его обратно, используя \\1 (уже без ?...)

...