from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as soup import numpy as np import pandas as pd my_url = 'https://sg.finance.yahoo.com/quote/S63.SI/history?p=S63.SI' uClient = uReq(my_url) page_html = uClient.read() uClient.close() # html parsing page_soup = soup(page_html, "html.parser") item = container.findAll("td", {"class":"D(ib) Fz(18px)"}) print(item.text)
Вывод
Singapore Technologies Engineering Ltd (S63.SI)
Мне нужно только получить S63.SI - это их в любом случае, чтобы отфильтровать мой вывод, чтобы он не дал Остальная часть вывода видна выше?
S63.SI
Ради альтернативы regex:
regex
string="Singapore Technologies Engineering Ltd (S63.SI)" output=string.split()[-1].strip('(').strip(')')
Комментарии:
string.split()
string.split()[-1]
Это один из способов сделать это без использования RegEX:
text = "Singapore Technologies Engineering Ltd (S63.SI)" ib = text[text.find("(")+1:text.find(")")] print(ib)
Вывод:
Вы должны использовать регулярное выражение что-то вроде r '. ((. )) $' будет соответствовать строке и помещать эту вещь между скобками в group1. см. https://regex101.com/ для получения более подробной информации
import re regex = r".*\((.*)\)$" test_str = "Singapore Technologies Engineering Ltd (S63.SI)" matches = re.finditer(regex, test_str, re.MULTILINE)
Вы можете использовать регулярные выражения, чтобы захватить значение в парантезе
import re text = "Singapore Technologies Engineering Ltd(S63.SI)" result = re.findall(r'\(([\w\d\.]+)\)', text) print(result)
['S63.SI']