2016-06-26 3 views
0

YAMLヘッダーを含むファイル、つまり---で始まるファイルは---です。ような何か:YAMLの内容とファイルの残り:正規表現を使用してYAMLヘッダーを抽出します。

--- 
title: Quantes monedes de cèntim caben a un cercle? 
author: Dan Meyer 
date: 2013-08-26 
abstract: Quantes monedes de cèntim caben a un cercle? 
tags: 3-acts 
continguts: àrea, cercle, ajustament de corbes, extrapolació, funció quadràtica, representació de funcions, 
relatedto: [] 
lang: ca 
--- 


[![Penny circle](./shot.png)](http://threeacts.mrmeyer.com/pennycircle/) 

Quantes monedes de cèntim caben a un cercle? 

## Recursos ## 

1. [Proposta original d'en Dan Meyer](http://blog.mrmeyer.com/2013/makeover-penny-circle/) ([localment](./media/activitats/meyer-penny-circle/dy_dan » Blog Archive » [Makeover] Penny Circle.htm)) 
1. L'[activitat en tres actes](http://threeacts.mrmeyer.com/pennycircle/) d'en Dan Meyer ([localment](./media/activitats/meyer-penny-circle/pennycircle.zip)) 
1. [Activitat a Desmos](https://teacher.desmos.com/pennycircle) 

私は内容を分割するためのpython3で正規表現を使用します。

[![Penny circle](./shot.png)](http://threeacts.mrmeyer.com/pennycircle/) 

Quantes monedes de cèntim caben a un cercle? 

## Recursos ## 

1. [Proposta original d'en Dan Meyer](http://blog.mrmeyer.com/2013/makeover-penny-circle/) ([localment](./media/activitats/meyer-penny-circle/dy_dan » Blog Archive » [Makeover] Penny Circle.htm)) 
1. L'[activitat en tres actes](http://threeacts.mrmeyer.com/pennycircle/) d'en Dan Meyer ([localment](./media/activitats/meyer-penny-circle/pennycircle.zip)) 
1. [Activitat a Desmos](https://teacher.desmos.com/pennycircle) 

私はこの再使用:p = re.compile('---\n(.*?)\n---\n(.*?)')をしかし、それは動作しません私の例では、最初の部分は、この

--- 
title: Quantes monedes de cèntim caben a un cercle? 
author: Dan Meyer 
date: 2013-08-26 
abstract: Quantes monedes de cèntim caben a un cercle? 
tags: 3-acts 
continguts: àrea, cercle, ajustament de corbes, extrapolació, funció quadràtica, representació de funcions, 
relatedto: [] 
lang: ca 
--- 

そして、第2です。あなたはDOTALL flag設定しない限り、

+0

yamlのコンテンツが見つかりました** [使用](https://regex101.com/r/sJ1uC6/1)** – rock321987

+0

@ rock321987:なぜ改行を省略しますか? –

+0

@MartijnPieters改行??あなたのポイントを得ていない? – rock321987

答えて

2

.は、改行と一致しません:私は2番目*から?を落とし

p = re.compile('---\n(.*?)\n---\n(.*)', flags=re.DOTALL) 

注意を。最初の1文字だけでなく、2番目の数字の後ろのすべてを入力したいと考えています(---)。

ドキュメントから:

re.S
re.DOTALL
'.'の特殊文字が改行を含めて、すべての任意の文字と一致してください。このフラグがなければ、'.'は改行以外のものと一致します。

しかし、---\n行でテキストを分割するだけで済みます。

yaml, text = text.split('---\n', 2)[1:] 

これは、テキストをプレフィックス、YAMLセクション、および残りの部分に分割します。接頭辞は[1:]で無視されます。

デモ:このような単純な区切り文字については

>>> import re 
>>> p = re.compile('---\n(.*?)\n---\n(.*)', flags=re.DOTALL) 
>>> p.search(text).groups() 
('title: Quantes monedes de cèntim caben a un cercle?\nauthor: Dan Meyer\ndate: 2013-08-26\nabstract: Quantes monedes de cèntim caben a un cercle?\ntags: 3-acts\ncontinguts: àrea, cercle, ajustament de corbes, extrapolació, funció quadràtica, representació de funcions, \nrelatedto: []\nlang: ca', "\n\n[![Penny circle](./shot.png)](http://threeacts.mrmeyer.com/pennycircle/)\n\nQuantes monedes de cèntim caben a un cercle?\n\n## Recursos ##\n\n1. [Proposta original d'en Dan Meyer](http://blog.mrmeyer.com/2013/makeover-penny-circle/) ([localment](./media/activitats/meyer-penny-circle/dy_dan » Blog Archive » [Makeover] Penny Circle.htm))\n1. L'[activitat en tres actes](http://threeacts.mrmeyer.com/pennycircle/) d'en Dan Meyer ([localment](./media/activitats/meyer-penny-circle/pennycircle.zip))\n1. [Activitat a Desmos](https://teacher.desmos.com/pennycircle)\n") 
>>> text.split('---\n', 2)[1:] 
['title: Quantes monedes de cèntim caben a un cercle?\nauthor: Dan Meyer\ndate: 2013-08-26\nabstract: Quantes monedes de cèntim caben a un cercle?\ntags: 3-acts\ncontinguts: àrea, cercle, ajustament de corbes, extrapolació, funció quadràtica, representació de funcions, \nrelatedto: []\nlang: ca\n', "\n\n[![Penny circle](./shot.png)](http://threeacts.mrmeyer.com/pennycircle/)\n\nQuantes monedes de cèntim caben a un cercle?\n\n## Recursos ##\n\n1. [Proposta original d'en Dan Meyer](http://blog.mrmeyer.com/2013/makeover-penny-circle/) ([localment](./media/activitats/meyer-penny-circle/dy_dan » Blog Archive » [Makeover] Penny Circle.htm))\n1. L'[activitat en tres actes](http://threeacts.mrmeyer.com/pennycircle/) d'en Dan Meyer ([localment](./media/activitats/meyer-penny-circle/pennycircle.zip))\n1. [Activitat a Desmos](https://teacher.desmos.com/pennycircle)\n"] 
2

、あなたが本当に正規表現を必要としません。テストファイル...

--- 
This is the first part 
--- 
This is the second part 

を考えると...

>>> s = open('testfile').read() 
>>> _, part1, part2 = s.split('---\n') 
>>> print part1 
This is the first part 

>>> print part2 
This is the second part 

...のような単純なもの...十分です。

+0

あなたは好きなように多くの '---'を持つことができます。だから分割してリストを作るだろう.... – somenxavier

関連する問題