2012-07-24 3 views
1

CSV 파일을 구문 분석하고 XML 파일을 생성하는 스크립트가 있습니다. 파서에게 줄 인수 중 하나는 구분 기호입니다. 필자의 경우 쉼표가 아니라 탭입니다.Python ConfigParser 요소를 CSV 인수로 변환

이 정보는 압축을 푼 다음 csv 파서로 전달하는 구성 파일에 저장됩니다.

ident = parser.get('CSV', 'delimiter') #delimiter taken from config file 

csv.register_dialect('custom', 
        delimiter= ident, #passed to csv parser 
        doublequote=False, 
        escapechar=None, 
        quotechar='"', 
        quoting=csv.QUOTE_MINIMAL, 
        skipinitialspace=False) 

그러나 "구분 기호"는 1 문자 문자열이어야한다는 형식 오류가 발생합니다. 나는 ident의 타입을 검사했는데 그것은 문자열이지만 \ t를 탭으로 인식하지 못하는 것 같습니다. ident = '\ t'또는 구분 기호 = '\ t'를 입력하면 작동합니다. 구성 파일에서 값을 올바르게 얻으려면 어떻게해야합니까?

+0

렌 무엇 (답하라)와에 repr (답하라) :

는 그냥 빈 문자열을 돌아 오기, 왕복에 값을 시도했다가 있습니까? –

+0

구성 파일에서 구분 기호 주위에 공백이 있습니까? 스트립()을 사용해야합니까? 'print ident'는 무엇을 보여줍니까? – ernie

+0

인쇄 ID는 \ t – charlie123

답변

0

ConfigParser을 사용할 수없는 것으로 보입니다. 문서에서 명시 적으로이 사례를 언급하지는 않지만 선행 공백은 값에서 제거됩니다.

from ConfigParser import ConfigParser 
cp = ConfigParser() 
cp.add_section('a') 
cp.set('a', 'b', '\t') 
cp.write(open('foo.ini', 'w')) 

cp_in = ConfigParser() 
cp_in.read('foo.ini') 
print(repr(cp_in.get('a', 'b'))) # prints ''