Документы и эксперименты подтверждают, что разрешены только разделители с одним символом.
Поскольку cvs.reader
принимает любой объект, поддерживающий протокол итератора, вы можете использовать синтаксис генератора для замены ||
-s с |
-s, а затем передать этот генератор читателю:
def read_this_funky_csv(source):
# be sure to pass a source object that supports
# iteration (e.g. a file object, or a list of csv text lines)
return csv.reader((line.replace('||', '|') for line in source), delimiter='|')
Этот код довольно эффективен, поскольку он работает на одной строке CSV за раз, при условии, что ваш источник CSV дает строкикоторые не превышают вашу доступную оперативную память:)