2014-10-15 3 views
-4

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

Мой сценарий:

<meta content="" property="news_keywords"/> 
<meta content="Tough and Truthful - Bostonians read the Boston Herald for solid reporting, whether in print or online, on the issues affecting their daily lives. The Boston Herald gets people talking. Our reporters are second-to-none, our photographers are Pulitzer Prize-winning and we present news that Bostonians care about and respond to." property="description"/> 
<meta content='{"link":"http:\/\/bostonherald.com\/","type":"frontpage"}' name="parsely-page"/><meta content="" property="keywords"/> 
<meta content="Drupal 7 (http://drupal.org)" name="generator"/> 
<link href="http://www.bostonherald.com/" rel="canonical"/> 
<link href="http://www.bostonherald.com/" rel="shortlink"/> 
<meta content="420" http-equiv="refresh"/> 
<link href="http://www.bostonherald.com/sites/default/files/images/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon"/> 
<title>Boston Herald | Boston Herald</title> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/modules/system/system.base.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/system/system.menus.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/system/system.messages.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/system/system.theme.css?nd76bo");</style> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/modules/aggregator/aggregator.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/comment/comment.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/date/date_api/date.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/date/date_popup/themes/datepicker.1.7.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/field/theme/field.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/mollom/mollom.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/node/node.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/poll/poll.css?nd76bo"); 
@import url("http://www.bostonherald.com/modules/user/user.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/views/css/views.css?nd76bo");</style> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/sites/all/modules/ctools/css/ctools.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/lightbox2/css/lightbox.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/panels/css/panels.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/rate/rate.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/libraries/superfish/css/superfish.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/libraries/superfish/css/superfish-vertical.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/libraries/superfish/css/superfish-navbar.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/views_slideshow/views_slideshow.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/jcarousel/skins/default/jcarousel-default.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/modules/panels/plugins/layouts/twocol_stacked/twocol_stacked.css?nd76bo");</style> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/basics.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/custom_blocks.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/navigation.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/view-story_slots.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/taxonomy/taxonomy-styles.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/bhr.css?nd76bo");</style> 
<style media="print" type="text/css">@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/print.css?nd76bo");</style> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/sites/all/themes/omega/alpha/css/alpha-reset.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/omega/alpha/css/alpha-alpha.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/omega/omega/css/formalize.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/omega/omega/css/omega-branding.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/omega/omega/css/omega-forms.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/layout-front.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/global.css?nd76bo");</style> 
<style media="all" type="text/css">@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/ike-omega-alpha-default.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/ike_omega/css/ike-omega-alpha-default-normal.css?nd76bo"); 
@import url("http://www.bostonherald.com/sites/all/themes/omega/alpha/css/grid/alpha_default/normal/alpha-default-normal-24.css?nd76bo");</style> 

Узор

<meta content(+.?)refresh"> 

Строка настолько большой, так что я пытался с различными подходами, но ни работ. Мне не нравится сохранять строку в любом txt-файле.

Сценарий, который я пробовал, но они не работали.

#Try 1 
import re 
re.findall("<meta content(+.?)refresh">",html) 

#Try 2 
matching = [s for s in html if "<meta content(+.?)refresh">" in s] 
+2

_ «Я пытался с разными подходами, но не работает». _ Покажите нам. – Kevin

+0

Кроме того, дизайн вашего кода немного поможет значительно. – Bowersbros

+0

Выбери свой кавычек – Luigi

ответ

0

Вопрос от комментария был: "Я хотел бы, чтобы захватить из секции строки, которые начинаются с„мета содержание“и заканчивается„обновить“>».

Я разделил его на строки, потому что этот путь^соответствует началу каждой строки, а не всей строке. Я использовал^для соответствия началу и $, чтобы соответствовать концу. На самом деле это, вероятно, не обязательно, так как < и > было бы достаточно. Также обратите внимание, что двойная кавычка экранируется символом косой черты перед ней.

Другой ключевой момент: это не +.? но. *?, который будет работать, чтобы захватить все символы в середине . строка

>>> import re 
>>> for line in html.splitlines(): 
...  m = re.match("^<meta content(.*?)refresh\"/>$", line) 
...  if m: 
...   print(m.group(0)) 
... 
<meta content="420" http-equiv="refresh"/> 

документы на Python регулярных выражениях можно найти здесь: https://docs.python.org/2/library/re.html

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