Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-写入到_csv时使用多字符分隔符_Python_Csv_Dataframe_Delimiter - Fatal编程技术网

Python Pandas-写入到_csv时使用多字符分隔符

Python Pandas-写入到_csv时使用多字符分隔符,python,csv,dataframe,delimiter,Python,Csv,Dataframe,Delimiter,pandas to_csv函数似乎只允许使用单字符分隔符/分隔符 是否有某种方法允许使用诸如“::”或“%%”之类的字符串 我试过: df.to_csv(local_file, sep = '::', header=None, index=False) 并获得: TypeError: "delimiter" must be a 1-character string 想想这行a::b::c'对标准CSV工具意味着什么:一个a、一个空列、一个b、一个空列和一个c。即使在引用或转义更复杂的情况下

pandas to_csv函数似乎只允许使用单字符分隔符/分隔符

是否有某种方法允许使用诸如“::”或“%%”之类的字符串

我试过:

df.to_csv(local_file,  sep = '::', header=None, index=False)
并获得:

TypeError: "delimiter" must be a 1-character string

想想这行
a::b::c'
对标准CSV工具意味着什么:一个
a
、一个空列、一个
b
、一个空列和一个
c
。即使在引用或转义更复杂的情况下:
“abc::def”::2
表示
abc::def
、空列和2

因此,您所要做的就是在每一列之间添加一个空列,然后使用
作为分隔符,输出几乎就是您想要的

我说“几乎”是因为熊猫将引用或逃避单列冒号。取决于您使用的方言选项,以及您尝试与之交互的工具,这可能是问题,也可能不是问题。不必要的引用通常不是问题(除非您要求
QUOTE_ALL
,因为这样您的列将由
:“”:
分隔,所以希望您不需要该方言选项),但不必要的转义可能是问题(例如,您可能会将字符串中的每一个
都变成
\:
或其他内容)。因此,您必须小心选择。但它适用于基本的“根据需要报价,大部分是标准的其他选项”设置。

使用

例:


您可以将所需分隔符的单个字符附加到每个元素,然后为delimeter传递单个字符,但如果您打算将其读回
pandas
中,则会遇到相同的问题difficulty@EdChum好主意..在DF中的每个字段中附加一个字符的命令是什么(它有100列和10000行)。我猜最后一列不能有尾随字符(因为是最后一列)。谢谢!您还有其他需要的工具吗?因为大多数电子表格程序、Python脚本、R脚本等都不会像Pandas那样识别格式。将第一个
附加到每个字段将不起作用,因为这只会保证每个字段都被引用或转义,所以您将获得somEthase>代码>:“:”/>代码,或至多<代码>::。(即使你想用方言参数来强制后者,它仍然会在一个值中间,而不是双冒号中逃出每一个冒号。)ftw,pandas现在支持多字符分隔符。但是,如果该分隔符出现在带引号的文本中,它将被拆分,并偏离在一行中检测到的字段的真实数量:(
np.savetxt(file.csv, np.char.decode(chunk_data.values.astype(np.bytes_), 'UTF-8'), delimiter='~|', fmt='%s',encoding=None)

np.savetxt(file.dat, chunk_data.values, delimiter='~|', fmt='%s',encoding='utf-8')