如何将单引号(')和(“)引号从DataFrame写入文件?

问题描述 投票:0回答:4

我正在尝试将DataFrame写入包含单引号和双引号的单元格的文件。我已经结合使用了'escapechar'和'quotechar'来实现它,但是我没有成功:

data_test = pd.DataFrame(np.array([["CD's", 'CD\'sss', 1], ['"', '"', 2], ['one', 'other', 3]]))

with open(outfile, 'w') as output_file:     
    writer = csv.writer(output_file,
        delimiter = '\t',
        lineterminator = '\r\n', 
        quotechar = '\'',
        doublequote=False,
        quoting=csv.QUOTE_NONE, 
        escapechar= '\''
        )
    for i in range(len(data_test)):
        line = data_test.iloc[i]
        writer.writerow(line)      
output_file.close()

我得到的输出在包含单引号的单元格(单元[1,1]和单元[1,2])中包含单双引号,但这不是正确的解决方案。

CD''s   CD''sss   1
"       "         2
one     other     3

我正在尝试获取:

CD's    CD'sss    1
"       "         2
one     other     3

关于如何结合使用单引号和双引号的任何想法?

python dataframe csv double-quotes quoting
4个回答
1
投票

使用此:

writer = csv.writer(output_file,
    delimiter = '\t',
    lineterminator = '\r\n',
    quotechar = "\\",
    doublequote=False,
    quoting=csv.QUOTE_NONE,
    escapechar="\\"
    )

输出

CD's    CD'sss  1

"   "   2

one other   3

1
投票

这有点神秘,但我认为这是重点:

Dialect.escapechar¶ 如果将引号设置为QUOTE_NONE,则编写器使用一个单字符字符串来转义分隔符,如果双引号设置为False,则使用quotechar。阅读时,escapechar删除了以下字符的任何特殊含义。默认为无,这将禁用转义。

您应将转义字符设置为无。


0
投票

您似乎很难在嵌入式引号上做一些特殊的事情。这与您的用例不符。它们没有特别的含义:它们只是字符串中的字符,要像其他所有字符一样,逐字记录。它们是数据,而不是可能具有特殊含义的命令行字符串。删除转义处理-指示作者

add

这些特殊含义,并导致不必要的解释。


0
投票
为什么不使用pandas.to_csv
© www.soinside.com 2019 - 2024. All rights reserved.