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



I正在用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

有人知道如何防止这种情况发生吗?

我对您的代码进行了一些调整,以帮助解决这个问题(在bold中(,并使事情变得更加直接。

  • 更新了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

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

最新更新