2011-11-03 60 views
2

我有一個文件,完整的數據在一定的格式,我想填補我自己的數據結構與數據與Python

例如反向模板,我可以有一個這樣的文件:

John - Smith :
children: 
    Sam 
    Kim 

我想這樣做與該字符串的東西,以便將數據提取到例如

firstName = "John" 
lastName = "Smith" 
number = "0123" 
children = ['Sam', 'Kim'] 

我希望有比使用分離器更簡單的方法..

回答

4

這裏是一個正則表達式的解決方案:

>>> import re 
>>> data = 'John - Smith : 0123\nchildren: \n Sam\n Kim' 
>>> match = re.match(r'(\w+) - (\w+) : (\d+).*?children:(.*)', data, re.S) 
>>> match.groups() 
('John', 'Smith', '0123', ' \n Sam\n Kim') 

然後,您可以指定組添加到您的變量:

>>> firstName, lastName, number = match.groups()[:3] 
>>> children = [c.strip() for c in match.group(4).strip().split('\n')] 

,結果......

>>> firstName 
'John' 
>>> lastName 
'Smith' 
>>> number 
'0123' 
>>> children 
['Sam', 'Kim']