2015-11-26 56 views
0

作爲內容的類型的一個例子,我要解析關票證的:如何使用python以乾淨的方式解析多行?

Name: 
snakeoil 
Host: 
foobar 

{block} 
    email: some data here 
    url: http://foo 
    date: 01/02/16 
{block} 

我可以識別「鍵」,這是通常在結腸結尾的任何字

我可以使用正則表達式模塊做像^\w$這樣的匹配來提取密鑰,但是我必須處理兩個值在同一行中vs在隨後行中的情況。

必須在下一行讀取單詞是我無法想象如何幹淨地和/或有效地解決。

回答

1

如果您需要emailurldate太:

>>> re.findall('\s*(.*?):[\n\s]?(.*)$', s, re.MULTILINE) 
[('Name', 'snakeoil'), ('Host', 'foobar'), ('email', 'some data here'), ('url', 'http://foo'), ('date', '01/02/16')] 

如果不是,@QiangJin解決方案有利於

2

您仍然可以使用正則表達式,如果它是良好的,

>>> re.findall('(.*?):\n(.*)$', content, re.MULTILINE) 
[('Name', 'snakeoil'), ('Host', 'foobar')] 
+1

要同時得到多線和同線,我猜正則表達式應該更像'r'(\ w *?):\ n?(。*)$''? – DainDwarf

+0

來自@DainDwarf的正則表達式可以做到這一點。謝謝! – CaseyJones

相關問題