Как разбить строку посередине в Python - PullRequest
0 голосов
/ 20 октября 2019

Я использую BeautifulSoup для очистки текста с веб-сайта. Я храню записку в переменной, которая представляет собой строку, содержащую специальные символы, буквы и цифры без пробелов.

Например:! 012WR55wr "!.

Я хотел бы разделить эту строку, чтобы я мог извлечь и преобразовать 55 в целое число, а затем использовать его для вычисления вещей.

Я пытался найти решение, но я нашел только два способа разбить строку в Python. Первый - разделить пробелы в строке, которых у меня нет. Второй - вставить# в строке, где я хотел бы его разбить. Поскольку я очищаю текст, я не могу поместить ни одной # в переменную, содержащую чистку.

Есть ли способ извлечь число55 из переменной и установите ее тип в int?

Спасибо!

РЕДАКТИРОВАТЬ:

Спасибо всем за помощь. Проблема теперь решена и вотрешение:

import re
import requests
from bs4 import BeautifulSoup

url = "url"

url_response = requests.get(url)
url_content = BeautifulSoup(url_response.content, 'html5lib')

code = url_content.find('div', 'article_details').get_text()

print(code)

В моем случае это возвращает следующую строку: "" "! At52R18wr"! "" "Теперь, чтобы извлечь нужное мне число, я использовал то, что предоставил @Muluk:

extracted_integers =  re.findall(r"\d+" , code) 
extracted_integers = [int(i) for i in extracted_integers]

Возвращает два целых числа вlist, 52 и 18. В этом случае меня интересует число 52, поэтому я удаляю 18.

del extracted_integers[-1]

и, наконец, я хотел сохранить целое число в отдельной переменной, чтобы я мог выполнять вычисления на нем.

for i in extracted_integers:
    value = i
value = int(value)

print(value)

Вывод: 52

Еще раз спасибо за помощь! Впервые используя stackoverflow!

1 Ответ

1 голос
/ 20 октября 2019

Все, что вам нужно, это RegEX - регулярное выражение. Вы можете импортировать re в python и начать использовать его функции, такие как search и findall, я могу объяснить вам процесс на примере.

import re

sample_str = '''!012WR55wr"!.'''

extracted_integers =  re.findall(r"\d+" , sample_str) # extracting string with patterns like digits.
extracted_integers = [int(i) for i in extracted_integers] # converting string to integer
print(extracted_integers) # you can see all your integers from your string.

Если вы хотите узнать больше о regEx, вы можете увидеть этот потрясающий блог -https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285

если вы проверяете регулярные выражения в некоторых тестовых примерах, вы можете использовать этот онлайн-инструмент - https://regex101.com/

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