【问题标题】:Remove double quotes while printing string in dataframe to text file将数据框中的字符串打印到文本文件时删除双引号
【发布时间】:2019-12-27 01:33:28
【问题描述】:

我有一个数据框,其中包含一个包含多个字符串的列。以下是数据的样子:

    Value
    EU-1050-22345,201908 XYZ DETAILS, CD_123_123;CD_123_124,2;1

数据框中有近 100,000 行这样的行。我想将此数据写入文本文件。

为此,我尝试了以下方法:

    df.to_csv(filename, header=None,index=None,mode='a')

但是当我这样做时,我将整个字符串放在引号中。我得到的输出是:

    "EU-1050-22345,201908 XYZ DETAILS, CD_123_123;CD_123_124,2;1"

但我想要的是:

    EU-1050-22345,201908 XYZ DETAILS, CD_123_123;CD_123_124,2;1 -> No Quotes

我也试过这个:

    df.to_csv(filename,header=None,index=None,mode='a',
               quoting=csv.QUOTE_NONE)

但是,我收到一个需要转义字符的错误。如果我将 escapechar='/' 添加到代码中,我会在多个地方得到 '/' (但没有引号)。我也不想要'/'。

有没有我可以在写入文本文件时删除引号而不添加任何其他转义字符?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    根据 OP 的评论,我认为分号把事情搞砸了。如果使用制表符分隔 csv,我不再有不需要的 \

    import pandas as pd
    import csv
    
    df = pd.DataFrame(columns=['col'])
    df.loc[0] = "EU-1050-22345,201908 XYZ DETAILS, CD_123_123;CD_123_124,2;1"
    df.to_csv("out.csv", sep="\t", quoting=csv.QUOTE_NONE, quotechar="",  escapechar="")
    

    原答案:

    根据这个answer,需要指定escapechar="\\"才能使用csv.QUOTE_NONE

    你试过了吗:

    df.to_csv("out.csv", sep=",", quoting=csv.QUOTE_NONE, quotechar="", escapechar="\\")

    【讨论】:

    • @Gary 我认为分号把事情搞砸了。使用制表符代替逗号分隔符可以吗?
    • 不幸的是没有。我将文件传递给的系统需要这种格式的文件才能使其脚本正常工作。目前,我正在打印带有引号的文件并使用“全部替换”手动删除它们。我想不出更好的方法来解决它。
    • @Gary 试试escapechar = ""
    • 我也试过了!再次,我收到一个需要转义字符的错误。正如您所提到的,我相信文本的格式会导致文件写入混乱。不幸的是,我真的无法改变这一点!
    • @Gary 这太奇怪了,因为它现在对我有用,但也许我正在创建的示例 df 仍然与您正在使用的不同
    【解决方案2】:

    我能够使用单个空格作为分隔符将 df 写入 csv,并通过将数据帧中现有的字符串内空格替换为不间断空格来删除字符串周围的“引号”,然后再将其写为csv.

    df = df.applymap(lambda x: str(x).replace(' ', u"\u00A0"))
    
    df.to_csv(outpath+filename, header=True, index=None, sep=' ', mode='a') 
    

    我无法使用制表符分隔文件来编写输出,尽管该解决方案也可以使用 df.to_csv() 的附加关键字:quoting=csv.QUOTE_NONE, quotechar="", escapechar="")

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 2010-12-15
      • 2022-01-13
      • 2011-07-10
      • 1970-01-01
      相关资源
      最近更新 更多