【问题标题】:Find Location of All Numbers with a Comma用逗号查找所有数字的位置
【发布时间】:2020-04-30 22:04:45
【问题描述】:

我一直在用漂亮的汤刮一些 HTML 页面,试图提取一些更新的财务数据。我只关心有逗号的数字,例如 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)

我考虑过下面的代码,但我不确定它是否会提取所有实例。即在列表中可能有多个用逗号分隔的数字实例。

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

任何想法都会有很大帮助!谢谢

【问题讨论】:

  • 请分享您的整个代码链接,以便我们运行并检查它。
  • 您可以尝试使用正则表达式 [\d]+,[\d]([\d]+,?)* 来查找所有带逗号的数字

标签: python string beautifulsoup numbers scrape


【解决方案1】:

你可以使用:

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

【讨论】:

    【解决方案2】:

    如果你只是想检查一个数字是否有逗号,如果有,你想提取它,那么你可以试试下面的方法。

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

    这将追加“文本”集合中包含逗号的所有元素,即使完全相同的元素重复多次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多