使用csv.writer生成Django代码文件时如何避免出现双空格问题
问题根源
你出现多余双空格的核心原因是:你将csv.writer的delimiter设为了空格,同时escapechar也设为了空格。当csv模块检测到内容中出现分隔符(也就是空格)时,会自动在前面加escapechar转义,就导致原有单空格变成了双空格。
解决方案
方案1:保留csv配置的前提下修改参数
因为你每次调用writerow仅传入只有1个元素的列表,delimiter不会被用来拼接多字段,完全不会出现在最终输出里,你可以把delimiter和escapechar换成代码中永远不会出现的字符即可:
# 把delimiter换成不会出现在Python代码里的字符,escapechar同理 thewriter = csv.writer(f1, delimiter='|', quotechar='', escapechar='\\', quoting=csv.QUOTE_NONE)
修改后原有写入逻辑不需要动,输出就不会再出现多余空格。
方案2:放弃csv模块,直接用原生文件写入(更推荐)
你要生成的是Python代码文件,不是CSV格式文件,用csv模块属于滥用工具,直接写入文件更简单高效,没有额外格式干扰:
with open('views.py', 'a+', encoding="UTF8") as f1: # 把要写的行全部放到列表里逐行写入即可 code_lines = [ 'from django.shortcuts import render, get_object_or_404, redirect', '@method_decorator(login_required, name="dispatch")', 'class PatientCreate(SuccessMessageMixin, CreateView): ', # 其余代码行 ] for line in code_lines: f1.write(f"{line}\n")
这种方式输出的内容和你传入的字符串完全一致,不会有任何多余格式处理。
内容的提问来源于stack exchange,提问作者Mereva
相关产品推荐
相关产品推荐

