2017-02-20 15 views
1

У меня есть файлы csv, которые имеют sep=, в качестве первой строки.Могу ли я использовать строку 'sep =' с стандартным CSV-модулем

, например

sep=, 
Col 1,Col 2, 
11.01.2017 21:56,Some data 
.... 

И мне нужно читать и писать с csv модуль Теперь он выглядит:

with open("file.csv", 'r', encoding='utf-8') as file: 
    file.readline() 
    fp = csv.DictReader(file, dialect='excel', delimiter=',') 

И то же самое при написании:

with open("file.csv", 'w', encoding='utf-8') as file: 
    file.writeline() 
    fp = csv.DictWriter(file, dialect='excel', delimiter=',') 

Но мне интересно, есть ли более стандартный способ в модуле csv для поддержки такого формата csv?

ответ

1

Когда вы вызываете file.readline(), вы можете удалить 'sep =' из значения и затем назначить его переменной. Затем, используя эту переменную в качестве разделителя:

csv_sep = file.readline()[4:] 
fp = csv.DictReader(file, dialect='excel', delimiter=csv_sep) 
+1

Да, я знаю, но мне вопрос, если есть какие-либо специальный формат для Standart 'csv' mofrule справиться с этим. Как использовать 'диалект = 'excel_with_sep_line'' insted of' dialect =' excel'' – GhostKU