【问题标题】:How to change end-of-line conventions?如何更改行尾约定?
【发布时间】:2017-05-13 04:37:25
【问题描述】:

我完成了我认为很简单的任务。我需要在行尾创建一个使用 unix LF 约定的文本文件。但是,当我尝试使用 pandas .to_csv 完成此操作时,我最终得到了 CR LF。如果我呆在我的机器上并且我对所有事情都使用 python,这不会是一个问题。但我不是。该代码将成为同事将使用的应用程序的一部分,并且该文件正在发送给第三方以实现自动化。代码如下:

df.to_csv("filename.txt", sep = '\t',line_terminator = '\n')

它位于我的代码中间,但当文件保存在目标文件夹中时,它总是切换回 CR LF。我认为这可能与 Windows 为“helpful”有关。我尝试使用this 类型的解决方案,但没有成功。我也没有任何运气找到 Python 的 dos2unix 类型包。无论如何我可以编写以 '\n' 结尾的行并将其粘贴在 Windows 中(如果可能,使用 to_csv)?

我正在使用 Python 2.7 和 Windows 7。

编辑:我知道notepad++,但我正在尝试用Python编写这一切,所以我的同事只需点击一个按钮(我将使用Tkinter并在完成后将其冻结为.exe)。 .txt 可以是 Windows 格式,但我将(我)将相同的信息写入 .MAT 和 .ref 文件。在这些文件中,它需要 '\n' 行尾,但 Windows 仍然给我 '\r\n'。

【问题讨论】:

  • 我建议您尝试编写没有 Windows 熟悉的扩展名的文件名 (.txt) 可能只是没有扩展名。反正对 linux 没关系。
  • @SaherAhwal:文件扩展名与问题无关,问题在于文件中的数据

标签: python pandas newline python-2.x lf


【解决方案1】:

请注意,此答案特定于 Python 2 的 CSV 处理。

to_csv 默认以'w' 模式打开文件,默认为文本模式。在 Windows 上,文本模式将 \n 转换为 \r\n。改为以二进制模式打开文件,如果框架中有非 ASCII 文本,请指定编码。

df.to_csv('filename.txt',sep='\t',mode='wb',encoding='utf8')

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多