Как изменить соглашения об окончании строки?
У меня есть то, что я думал, было бы простой задачей. Мне нужно создать текстовый файл, который использует соглашение Unix LF в конце строки. Однако, когда я пытаюсь сделать это, используя pandas .to_csv, я получаю CR LF. Это не было бы проблемой, если бы я оставался на своей машине, и если бы я использовал Python для всего. Но я нет. Код будет частью приложения, которое будет использовать коллега, и файл будет отправлен третьей стороне для автоматизации. Код выглядит следующим образом:
df.to_csv("filename.txt", sep = '\t',line_terminator = '\n')
Это находится в середине моего кода, но всегда переключается обратно на CR LF, когда файлы сохраняются в целевой папке. Я думаю, что это может быть связано с тем, что Windows " полезна ". Я попытался использовать этот тип решения без удачи. Мне также не повезло найти пакет типа dos2unix для Python. В любом случае можно ли написать строки, заканчивающиеся на '\n', и оставить их в Windows (если возможно, используя to_csv)?
Я использую Python 2.7 и Windows 7.
Изменить: я знаю о notepad++, но я пытаюсь написать все это на Python, поэтому мой коллега должен только нажать кнопку (я буду использовать Tkinter и замораживать это в.exe, как только я закончу)..Txt может быть отформатирован в Windows, но я буду (я) записывать ту же информацию в файлы.MAT и.ref. В этих файлах ему нужен конец строки '\n', но Windows все еще дает мне '\r\n'.
1 ответ
to_csv
по умолчанию открывается файл в 'w'
режим по умолчанию в текстовом режиме. В Windows текстовый режим переводит \n
в \r\n
, Вместо этого откройте файл в двоичном режиме и укажите кодировку, если в вашем фрейме есть текст не ASCII.
df.to_csv('filename.txt',sep='\t',mode='wb',encoding='utf8')