Что самый чистый путь состоит в том, чтобы извлечь URL из строки с помощью Python?

Вот мое решение с использованием LEAD

SELECT ROUND(4.0 * SUM(bal * days / 36500), 2) as Interest
FROM (
    SELECT bal, NVL(LEAD(trx_date) OVER (ORDER BY trx_date) - trx_date, 0) days
    FROM transaction)

. Это дает начисленные проценты 62,79 для выборочных данных. Ниже приведены отдельные суммы процентов

+----+--------+-------+  
|DAYS|     BAL|    INT|  
+----+--------+-------+  
|   4|       0|      0|  
|   3|    7500|   2.47|  
|   7|    5000|   3.84|  
|  10|   15000|  16.44|  
|   5|    6000|   3.29|  
|   5|    5000|   2.74|  
|   5|   12100|   6.63|  
|  10|   10000|  10.96|  
|   5|   30000|  16.44|  
|   0|   15000|      0|  
+----+--------+-------+  
23
задан Alfabravo 23 December 2014 в 21:07
поделиться

4 ответа

Используйте регулярное выражение.

Ответ для комментария от OP: Я знаю, что это не полезно. Я говорю Вам корректный способ решить проблему, поскольку Вы заявили, что это должно использовать регулярное выражение.

8
ответ дан ddaa 29 November 2019 в 01:08
поделиться

Можно использовать BeautifulSoup.

def extractlinks(html):
    soup = BeautifulSoup(html)
    anchors = soup.findAll('a')
    links = []
    for a in anchors:
        links.append(a['href'])
    return links

Примечание, что решение с regexes быстрее, хотя не будет так же точно.

4
ответ дан Seb 29 November 2019 в 01:08
поделиться

если Вы знаете, что существует URL после пространства в строке, можно сделать что-то вроде этого:

с является строкой containg url

>>> t = s[s.find("http://"):]
>>> t = t[:t.find(" ")]

иначе, необходимо проверить, находят ли возвраты-1 или нет.

4
ответ дан sinzi 29 November 2019 в 01:08
поделиться

Посмотрите на подход Django здесь: django.utils .urlize () . Регулярные выражения слишком ограничены для работы, и вам придется использовать эвристику, чтобы получить в основном правильные результаты.

12
ответ дан 29 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: