【问题标题】:Write volatile strings to file in Python在 Python 中将易失性字符串写入文件
【发布时间】:2014-01-19 21:17:01
【问题描述】:

我有很多字符串:在一个元组列表中大约有 14,000 个。 很多字符串都有逗号和换行符,甚至可能是 unicode 分隔符——不是 100% 确定的。

我需要将元组写入文件,最好是某些格式的 excel 或数字可以打开。我尝试了 CSV,但字符串中的所有逗号都弄乱了文件。

我应该如何将我的元组列表写入文件,文件应该是什么格式,这样字符串中奇怪的内容才不会影响文件的格式

【问题讨论】:

  • CSV 正在转义逗号和“奇怪的内容”,以防止它被搞砸。在导入时它会被取消转义。
  • 附带说明,如果这是 Python 2.x,CSV 模块并不能真正处理 Unicode;它只是将所有内容视为“一些随机的 ASCII 兼容 8 位格式”。幸运的是,如果您使用的是 UTF-8,那么重要的字符(逗号、换行符、反斜杠,也许还有引号)都是 ASCII 兼容的,所以它可以工作。但如果您有非 UTF-8 数据,请参阅模块文档底部的示例。

标签: python string io tuples


【解决方案1】:

在 python csv 模块中,您可以定义 delimiter 而非逗号:

csv.writer(file, delimiter=':')

【讨论】:

  • 我可以用作分隔符的最晦涩的字符是什么?我的字符串是来自推文的单词,我的推文样本几乎涵盖了所有 unicode 字符??
  • 正如@mhlester 所说,分隔符只是被转义以确保内容安全。其实没关系。如果您将其读回csv.reader,您的价值观将是相同的。还要记住,用于写入的分隔符应该在读取时使用。
【解决方案2】:

如果目标是 Excel,那么您可以使用 Excel 文件写入模块,例如 XlsxWriterxlwt

这样可以避免 CSV 分隔符出现任何问题。

【讨论】:

    【解决方案3】:

    不要改变任何东西。

    由于“我的推文样本几乎涵盖了所有 unicode 字符”,因此没有合理的安全分隔符可供您选择。

    但 CSV 有处理这种情况的方法:转义特殊字符、引用包含特殊字符的字段,或两者兼而有之。有很多选项可供选择,您可以在Dialects and Formatting Parameters 中看到。

    但是,默认方言是专门为与 Excel 配合使用而设计的。而且,由于您的目标是将数据放入 Excel 可以打开的某种格式,因此您可以按原样使用默认值。除非您想让它在文本编辑器中更具可读性和可编辑性,否则没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2011-10-24
      • 2011-10-18
      • 1970-01-01
      相关资源
      最近更新 更多