Python生成JS文件时如何让字典值的require语句不被包裹为字符串?
你要生成的是JavaScript对象字面量,不是标准JSON格式,json.dumps 只能输出严格符合JSON规范的内容,所有字符串值都会被包裹双引号,因此不适合该场景,可参考以下两种实现方案:
方案1:手动拼接字符串(轻量场景首选)
不用依赖JSON模块,直接按JS语法规则拼接内容即可:
someList = ["a", "b", "c", "d"] entry_list = [] for letter in someList: # 按目标格式拼接单个键值对,保留缩进 entry_list.append(f' "{letter}": require(\'some/path/{letter}\')') # 合并为完整的JS对象内容 js_object_content = "{\n" + ",\n".join(entry_list) + "\n}" # 直接保存为.js文件即可供JS业务代码使用 with open("newFile.js", "w", encoding="utf-8") as f: f.write(js_object_content)
方案2:模板引擎生成(复杂场景首选)
如果后续JS对象结构会变得更复杂,推荐用模板引擎维护,可读性和可扩展性更高:
- 先安装依赖:
pip install jinja2 - 实现代码:
from jinja2 import Template someList = ["a", "b", "c", "d"] # 定义JS对象模板 js_template = Template(""" { {% for item in list %} "{{ item }}": require('some/path/{{ item }}'){% if not loop.last %},{% endif %} {% endfor %} } """) # 渲染生成内容 js_content = js_template.render(list=someList).strip() with open("newFile.js", "w", encoding="utf-8") as f: f.write(js_content)
注意:如果你的key包含引号、斜杠等特殊字符,需要提前做转义处理,避免生成的JS文件出现语法错误。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

