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-символьной строкой. Я проверил тип идентификатора, и это строка, но, похоже, она не признает \ t в качестве вкладки. Когда я помещаю ident = '\ t' или delimiter = '\ t', он работает. Как правильно получить значение из файла конфигурации.

+0

Что LEN (идент) и магнезии (ОПОЗНАВАНИЕ)? –

+0

Есть пробелы вокруг разделителя в файле конфигурации? Может быть, вам нужно использовать strip()? Что показывает «распечатать идентификатор»? – ernie

+0

печать идентификационных отображений \ 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 '' 

 Смежные вопросы

  • Нет связанных вопросов^_^