Выберите определенную c часть текста, используя python - PullRequest
2 голосов
/ 29 апреля 2020
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 - это их в любом случае, чтобы отфильтровать мой вывод, чтобы он не дал Остальная часть вывода видна выше?

Ответы [ 4 ]

2 голосов
/ 29 апреля 2020

Ради альтернативы regex:

string="Singapore Technologies Engineering Ltd (S63.SI)"
output=string.split()[-1].strip('(').strip(')')

Комментарии:

  • string.split() разделит ваш текст на отдельные слова
  • для последнего слова (string.split()[-1]), символы круглых скобок
2 голосов
/ 29 апреля 2020

Это один из способов сделать это без использования RegEX:

text = "Singapore Technologies Engineering Ltd (S63.SI)"

ib = text[text.find("(")+1:text.find(")")]

print(ib)

Вывод:

S63.SI
1 голос
/ 29 апреля 2020

Вы должны использовать регулярное выражение что-то вроде 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)
1 голос
/ 29 апреля 2020

Вы можете использовать регулярные выражения, чтобы захватить значение в парантезе

import re
text = "Singapore Technologies Engineering Ltd(S63.SI)"
result = re.findall(r'\(([\w\d\.]+)\)', text)
print(result)

Вывод:

['S63.SI']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...