You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter读取文本框内容写入CSV时为何额外添加双引号?

问题解决:Tkinter文本框输入写入CSV时双引号被转义的问题

原因分析

这不是Tkinter的问题,是Python内置csv模块的默认规则导致的。CSV格式规范中,当字段包含双引号、逗号或换行符时,会自动用双引号包裹整个字段,同时将字段内部的双引号替换为两个双引号(这是CSV标准的转义方式)。而单引号不属于CSV的特殊处理字符,所以不会被修改。

比如你输入的He said "That is my dog",写入CSV时,因为字段包含双引号,模块会自动给整个字段加双引号,同时把内部的双引号转成"",最终就变成了"He said ""That is my dog"""。

解决方法

要保留原始字符串的双引号,需要修改csv.writer的quoting参数,禁用自动引号处理:

代码示例

import tkinter as tk
import csv

main_window = tk.Tk()
text_box = tk.Text(main_window, width=50, height=15, background="white")
text_box.pack()

def save_to_csv():
    # 去掉文本框末尾默认的换行符
    content = text_box.get("1.0", tk.END).strip()
    with open("output.csv", "w", newline="", encoding="utf-8") as f:
        # 禁用自动引号处理
        writer = csv.writer(f, quoting=csv.QUOTE_NONE, escapechar="")
        writer.writerow([content])

save_btn = tk.Button(main_window, text="保存到CSV", command=save_to_csv)
save_btn.pack()

main_window.mainloop()

注意事项

  • 如果你的文本包含逗号或换行符,使用QUOTE_NONE可能会破坏CSV格式(这些是CSV的字段/行分隔符)。这种情况可以选择接受双引号转义的结果(用默认的csv.QUOTE_MINIMAL),或者改用JSON等其他格式存储。
  • escapechar设为空字符串是因为禁用引号后无需转义字符,若需转义其他字符可指定对应符号。

内容的提问来源于stack exchange,提问作者Elzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:23:17