2013-07-04 73 views
0

明智我有在文本文件中的以下條目文本(的abc.txt)文件:解析文件部分在python

[General] 
Local=C:\Work\July\ 
path=C:\Work\July\abc 

[Field1] 
BB0B2BA8--EFE4-4567-B8AE-0204D4BF9F60= 

[CustDetails] 
BB0B2BA8-EFE4-4567-B8AE-0204D4BF9F60=NOthing 

[DirName] 
8e27822e-5f46-4f41=TEST 

[URLNAME] 
8e27822e-5f46=https:// 

[DestURL] 
8e27822e-5f46=some_URL 

我要解析的abc.txt文件,並考慮到變量。像可變

MYpath = C:\Work\July\abc 
custdetails= Nothing 
dir_name = TEST 
URL_Name = https:// 
DestURL = some_URL 

感謝,

+0

你看過ConfigParser模塊嗎? @ user2543304 –

+0

作爲參考,這是一個''ini''文件。 –

回答

2

使用ConfigParser:

import ConfigParser 

config = ConfigParser.ConfigParser() 
config.read('abc.txt') 

dic = {} 

for section in config.sections(): 
    for option in config.options(section): 
     res = config.get(section, option) 
     if res == '': 
      continue 
     dic.update({section: res}) 

print dic 

輸出:

{'DestURL': 'some_URL', 'URLNAME': 'https://', 'CustDetails': 'NOthing', 'DirName': 'TEST', 'General': 'C:\\Work\\July\\abc'} 
0

您可以使用dict這裏:

>>> dic = {} 
with open('abc.txt') as f: 
    data = f.read() 
    lines = data.split('\n\n') 
    for line in lines: 
     line = line.split('\n') 
     field = line[0].strip('[]') 
     val = line[-1].split('=')[1] 
     if val: 
      dic[field] = val 
...    
>>> dic 
{'DestURL': 'some_URL', 
'URLNAME': 'https://', 
'CustDetails': 'NOthing', 
'DirName': 'TEST', 
'General': 'C:\\Work\\July\\abc'} 
+0

爲什麼在標準庫中已存在解析器時重新實現解析器?這種解決方案會在一行中出現多個'='符號,或者不同數量的空行。命名也是不正確的。 'lines'是多行。 'line'也是多行。 – viraptor

+0

@viraptor:我同意。另外,如果等號周圍有空格。 – refi64