2013-07-04 5 views
0

의 현명한 파일 섹션을 구문 분석 :내가 텍스트 파일에 다음 항목을 갖는 텍스트 (abc.txt) 파일이 파이썬

[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

관련 문제