2015-09-01 2 views
-1

У меня есть скрипт python, который использует механизацию для захвата данных с веб-страницы. Это работает нормально, но я сделал взломанную работу, а затем использовал bash для фильтрации текста, который я ищу. Теперь мне нужно сделать это в главном скрипте python, так как мне нужно использовать выходное значение.Фильтрация вывода в python?

response = br.submit() 
print response.read() 

Это выводит ответ, который я затем манипулировать с Баш

| grep usedData | cut -d '"' -f2 | sed 's/\<GB used\>//g'` 

Как я могу сделать все это в Python?

Выход из сценария баш будет несколько (например, 123,45)

Вход:

<tr><th>Current Data Usage: </th><td>221.59GB</td></tr> 


Output: 221.59 
+1

Пожалуйста, укажите пример ввода/вывода вопроса. – luoluo

+0

вы можете использовать python через параметр stdin; http://stackoverflow.com/questions/9655841/python-subprocess-how-to-use-pipes-thrice –

ответ

1

Вы можете использовать регулярное выражение, чтобы найти все последовательности цифр и периодов, которые предшествуют «ГБ».

>>> import re 
>>> s = "<tr><th>Current Data Usage: </th><td>221.59GB</td></tr>" 
>>> match = re.search(r"([\d\.]*)GB", s) 
>>> match.group(1) 
'221.59' 
+0

Большое спасибо - мне нравится это решение. Кажется намного проще, чем мой сценарий bash :) – Greg

+0

Вот почему я попросил ввода/вывода. лол – luoluo

0

Просто попробуйте это:

input_html = "<tr><th>Current Data Usage: </th><td>221.59GB</td></tr>" 
begin = input_html.find("</th><td>") 
end = input_html.find("GB</td>") 
output = input_html[begin+len("</th><td>"):end] 
print output 

Это должно найти именно то, что вам ищем.

+0

Пожалуйста, не используйте 'str' в качестве переменной. Если вы это сделаете, вы не сможете использовать функцию 'str()'. – Paco

+0

Вы абсолютно правы, просто исправили это. Благодаря! –

+0

Извините, что вам сказали, что 'input' также является функцией в python ;-) – Paco

Смежные вопросы