我需要将程序输出写入文件。但是,某些字段已经包含空格,逗号,分号,制表符。因此,我不想使用空格,制表符,逗号作为字段分隔符。数据来自网络,因此服务器管理员可能会使用错误的格式。
我虽然使用任何组成的字符串,例如我的名字。但是,如果输出可能被其他研究人员左右使用,这可能是不专业的。
在这个问题上有什么建议吗?如果我害怕使用逗号,分号,制表符,空格作为分隔符,该怎么办?
编辑: 对于那些建议使用json或csv模块的答案,请注意,我要将文件加载到MySQL数据库中。我只能向MySQL指定字段由[某些分隔符]分隔。我还需要一个简单的解决方案。
答案 0 :(得分:3)
使用逗号(或制表符),但使用适当的序列化程序,该序列化程序知道如何在写入时转义字符,并在读取时转义字符。 The csv
module知道如何执行此操作,似乎符合您的可能要求。
是的,您可以尝试找到一些从未出现在数据中的随机字符,但这仅意味着如果该字符曾经出现过,您将惨死,这意味着产生的输出不会现有的解析器知道如何处理。 CSV是一种众所周知的格式(如果复杂到令人难以置信的话,具有多种多样的方言),并且可以由现有的库以任何使用它的语言来解析。
JSON(由pickle
模块在Python中处理)通常和语言无关的格式都非常有用, evaluation.auc_score(model,data)
也是如此(尽管它只能在Python中读取),但是根据您的描述,CSV可能是解决方案的起点。
答案 1 :(得分:0)
通常,好的分隔符可以是任何普通的,可通过键盘输入的符号,这些符号在数据中的其他任何地方都不会使用。我的建议是“ |”或“ /”。
答案 2 :(得分:0)
CSV文件通常在包含字段分隔符的字段周围使用引号,并使用反斜杠或其他引号对文字引号进行转义。
CSV不是一种定义明确的格式,但是有许多由不同供应商实现的变体。如果您想使用一种更全面的文本格式来存储结构化数据,则应该使用定义更好的序列化格式之一,例如JSON和YAML。