Python:pandas.to_csv添加不需要的引号

2024-05-12 21:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pd.read_csv读取CSV文件,如图所示:

lisp = pd.read_csv('ida_lisp.ida', header=None, skip_blank_lines=False)

我用键值替换%1%,并将结果保存到不同的位置,如图所示:

heating_setpoint_s = [19, 20, 21, 22, 23, 24] 
for i in range(len(heating_setpoint_s)):
    lisp1 = lisp.replace('%1%', str(heating_setpoint_s[i]), regex=True)
    path = "C://Users//nico//"+str(i+1)+"_ida"
    os.chdir(path)
    lisp1.to_csv('ida_lisp.ida', header=False, index=False, na_rep=" ")

对于旧CSV文件中的一行MDESIGN ""例外情况,一切正常:

      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
      MDESIGN ""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

保存后更改为:

      K1 0.0
      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
"      MDESIGN """""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

有人知道如何预防吗


Tags: 文件csvpathfalsereadheaderpdida
2条回答

我已经对您的代码做了一些调整,以帮助解决这个问题(以粗体),并使您的工作更直接一些

  • 更新了for循环,以直接迭代list,而不是使用range(len())调用进行卷积
  • 添加了一个replace函数来替换字符串中的任何杂散"
  • 添加了一个strip函数来清除所有值,以删除任何前导/尾随空格,从而使输出CSV是干净的
  • 已将文件路径连接更新为使用os.path.join
  • 在存储目录不存在的情况下添加了os.makedirs调用

示例代码:

import os
import pandas as pd

lisp = pd.read_csv('ida_lisp.ida', header=None, skip_blank_lines=False)

heating_setpoint_s = [19, 20, 21, 22, 23, 24] 
for i in heating_setpoint_s:
    lisp1 = lisp.replace('%1%', str(i), regex=True).replace('"+', '', regex=True)
    # Clean column 0, assuming this is the only column, based on sample data provided.
    lisp1 = lisp1.iloc[:, 0].str.strip()
    path = "C:/Users/nico/{}_ida".format(i)
    if not os.path.exists(path):
        os.makedirs(path)
    lisp1.to_csv(os.path.join(path, 'ida_lisp.ida'), header=False, index=False, na_rep="")

来自CSV的输入

      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
      MDESIGN ""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

输出:

K2 0.0
TAU 1.0
SPECPUMPPO 349.0
MDESIGN

MODULE chil
TYPE SIMCHIL
NFPLR 0
COP 3

根据pandas文档,^{}有一个quotechar=参数,默认为",也许您可以尝试另一个符号,比如~,作为引号char(即lisp1.to_csv('ida_lisp.ida', header=False, index=False, na_rep=" ", quotechar='~'))。通过这种方式,您可以测试问题是否纯粹是由引号字符引起的,而不是来自您的数据

相关问题 更多 >