Извлечение числа из нескольких строк в цикле - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в python и сообществе python, и я надеялся, что кто-то на платформе сможет помочь мне со следующим. Я пытаюсь выучить пакет Beautiful soup от Python, чтобы почистить некоторые данные из inte rnet и провести анализ этих данных. Я застрял в следующем:

Я пытаюсь извлечь цены из следующих строк:

A = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 182,00</span>'''
B = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 92,00</span>'''
C = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 1820,00</span>'''
D = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 9,00</span>'''

В следующий формат:

AA = "€182,00"
BB = "€92,00"
CC = "€1820,00"
DD = "€9,00"

Я хотел бы сделать выражение как можно более общим, чтобы я мог использовать oop также для большего количества строк. Есть кто-то, кто может мне помочь? :)

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Вы можете использовать функцию, которая анализирует строку с помощью регулярного выражения и возвращает первое совпадение, таким образом вы сможете анализировать строку на основе предоставленного вами регулярного выражения.

( Вы можете игнорировать # coding: utf-8, я просто добавил его, чтобы я мог проверить его в терминале как контейнер с символом евро.)

# coding: utf-8
import re

def extract_text(regex, val):
  extracted = re.findall(regex, val)[0]
  return extracted

extr = extract_text("€ [\d]+,[\d]+", '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 182,00</span>''')
print(extr)
0 голосов
/ 08 апреля 2020

Вы не можете динамически создавать переменные. Но что-то вроде этого помогает?

from bs4 import BeautifulSoup

A = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 182,00</span>'''
B = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 92,00</span>'''
C = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 1820,00</span>'''
D = '''<span style="font:16px Arial; color:#993c00; font-weight:bold;">€ 9,00</span>'''


def get_text(html_string):
    soup = BeautifulSoup(html_string, 'html.parser')
    return (soup.text)

html_stringList = [A,B,C,D]
priceList = []
for var_string in html_stringList:
    priceList.append(get_text(var_string))

print(priceList)

Вывод:

['€ 182,00', '€ 92,00', '€ 1820,00', '€ 9,00']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...