Python CSV合并两列结果带多余引号问题修复求助
修复CSV列合并后出现多余引号的问题
问题原因
你遇到的多余引号问题,大概率是原CSV中的字段本身被引号包裹,读取时保留了引号内容,导致拼接后写入CSV时被自动转义,生成重复引号。
修复方案1:修正原csv模块代码
在处理列值时,先去除字段两端的引号,再进行替换和拼接:
import csv with open('C:/asg/ftpfiles/output/NEWCATZ.csv', newline='') as csvfile: reader = csv.reader(csvfile) rows = [] for row in reader: if len(row) >= 3: # 确保列B(row[1])和列C(row[2])都存在 # 先去除字段两端的引号,再处理内容 col_b = row[1].strip('"').replace('*', '00').zfill(4) col_c = row[2].strip('"').replace('*', '00').zfill(4) row.append(col_b + col_c) rows.append(row) with open('C:/asg/ftpfiles/output/NEWCATZ_updated.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerows(rows) # 批量写入更高效
修复方案2:使用Pandas简化操作
既然你已经导入了Pandas,用它处理CSV会更简洁,且自动处理引号问题:
import pandas as pd # 读取CSV文件 df = pd.read_csv('C:/asg/ftpfiles/output/NEWCATZ.csv') # 处理列B和列C:去除引号、替换*为00、补全到4位 df['处理后列B'] = df.iloc[:, 1].astype(str).str.strip('"').str.replace('*', '00').str.zfill(4) df['处理后列C'] = df.iloc[:, 2].astype(str).str.strip('"').str.replace('*', '00').str.zfill(4) # 合并为新列D df['列D'] = df['处理后列B'] + df['处理后列C'] # 写入新CSV,默认不会添加多余引号 df.to_csv('C:/asg/ftpfiles/output/NEWCATZ_updated.csv', index=False)
如果你的CSV有表头,可直接用列名替换iloc[:,1](比如df['B列名称']),代码可读性会更好。
内容的提问来源于stack exchange,提问作者Alex Co
相关产品推荐
相关产品推荐

