Найти расположение всех номеров с запятой - PullRequest
1 голос
/ 01 мая 2020

Я очищаю некоторые HTML страницы с красивым супом, пытаясь извлечь некоторые обновленные финансовые данные. Я забочусь только о числах, которые имеют запятую ie 100 000 или 12 000 000, но не 450, например. Цель состоит в том, чтобы просто найти расположение разделенных запятыми чисел в строке, а затем мне нужно извлечь все предложение, в котором они находятся.

Я переместил весь фрагмент в список строк, и в этом списке я хочу извлечь все числа, которые имеют запятую.

url = 'https://www.sec.gov/Archives/edgar/data/354950/000035495020000024/hd-2020proxystatement.htm'
r = requests.get(url)  
soup = BeautifulSoup(r.content)
text = soup.find_all(text = True)
strings = []
for i in range(len(text)):
        text_s = str(proxy_text[i])
        strings.append(text)

Я думал о следующем коде повторения, но я не уверен, удалит ли он все экземпляры .. ie в списке может быть несколько экземпляров чисел разделенные запятыми.

number  = re.sub('[^>0-9,]', "", text)

Любые мысли будут огромной помощью! Спасибо

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Вы можете использовать:

from bs4 import BeautifulSoup
import requests, re

url = 'https://www.sec.gov/Archives/edgar/data/354950/000035495020000024/hd-2020proxystatement.htm'
soup = BeautifulSoup(requests.get(url).text, "html5lib")
for el in soup.find_all(True): # loop all element in page
    if re.search(r"(?=\d+,\d+).*", el.text):
        print(el.text)
        # print("END OF ELEMENT\n") # debug only

1 голос
/ 01 мая 2020

Если вы просто хотите проверить, есть ли у числа запятая или нет, и вы хотите извлечь ее, если она есть, вы можете попробовать следующее.

new = []
for i in text:
    if ',' in i:
        new.append(i)

Это добавит все элементы в коллекции 'text', содержащей запятую, даже если один и тот же элемент повторяется несколько раз.

...