2016-09-14 8 views
1

Я имею дело с загрузочными файлами Concordance и должен их редактировать, и поэтому я использую Python для этого. Столбцы разделены символом пиксора и имеют þ как катчар.Python csv reader multi-character quotechar?

Проблема заключается в катчаре, модуль csv в python принимает только односимвольный код (нет проблемы при написании файла csv).

Вопрос: Как я могу прочитать CSV-файл в Python, где катчар является многосимвольным?

Пример Файл- CSV:

þcol_1þ¶þcol_2þ¶þcol_3þ¶þcol_4þ 
+2

Можете ли вы перейти на Python 3? Модуль 'csv' использует тип' str' в 2 и 3, а в Python 3, будучи полностью осведомленным в Unicode, 'þ' - всего один код. –

+2

На самом деле, что * encoding * используется для этого файла? Только если файл использует многобайтовую кодировку (любая переменная, такая как UTF-8 или фиксированная как UTF-16), проблема Python 2 может возникнуть здесь. Если это делается в * 8-битной кодировке *, например, CP1252, тогда вам нужно использовать только '' \ xb6'' и '' \ xfe''. –

+0

Python 3 - это самое чистое решение. –

ответ

3

Формат файла конкордантность 8-бит кодируется, и и þ символы кодируются в Latin-1, на самом деле. Это означает, что они кодируются двоичными значениями 0xB6 и 0xFE соответственно.

Питон 2 csv модуль принимает эти байты вполне счастливо:

csv.reader(fileobj, delimiter='\xb6', quotechar='\xfe') 

Как обычно для csv модуля, убедитесь, чтобы открыть файл в двоичном режиме, чтобы оставить новую строку обращения к модулю.

В Python 3, откройте файл в текстовом режиме с newline='' и encoding='latin1', а также использовать вышеуказанные \xhh побеги или фактические символы, так delimiter='¶', quotechar='þ'.

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