Python写入JS文件时如何避免var LIST_DATA带引号?GitHub API解析器求助
解决JS文件生成时变量声明带多余引号的问题
看起来你是在生成JS变量文件时不小心把整个声明语句都转成字符串了,我来帮你搞定这个问题~
问题根源
你遇到的情况,大概率是把var LIST_DATA = 这个变量声明部分也当成了JSON数据的一部分去序列化(比如用json.dumps处理整个语句),或者在字符串拼接时错误地多套了一层引号,导致最终写入文件时连变量名都被加上了引号。
正确的实现步骤
我们需要把「JS变量声明」和「JSON数据内容」分开处理,再拼接成完整的JS代码:
单独处理数据部分的JSON序列化
先把从GitHub API获取到的列表数据转成合法的JSON字符串:import json # 假设这是你从API拿到并处理好的数据 api_data = [{"name": "Python", "type": "category"}] # 把数据转成标准JSON字符串(indent参数可选,让输出更易读) json_content = json.dumps(api_data, indent=2)拼接完整的JS代码
把变量声明和JSON内容直接拼接成JS语句,不需要额外加引号:js_code = f"var LIST_DATA = {json_content};"写入文件
直接把拼接好的JS代码写入文件,不要对整个js_code做序列化操作:with open("output.js", "w", encoding="utf-8") as f: f.write(js_code)
完整示例脚本
这里给你一个包含API请求和文件生成的完整例子:
import json import requests def fetch_github_categories(): # 替换成你实际调用的GitHub API接口 api_url = "https://api.github.com/your-target-endpoint" try: response = requests.get(api_url) response.raise_for_status() # 捕获请求错误 # 这里根据API返回结构,处理成你需要的[{name:..., type:...}]格式 raw_data = response.json() processed_data = [{"name": item["name"], "type": "category"} for item in raw_data] return processed_data except Exception as e: print(f"获取API数据失败: {e}") return [] def generate_output_js(): data = fetch_github_categories() if not data: print("没有可生成的数据") return json_str = json.dumps(data, indent=2) js_content = f"var LIST_DATA = {json_str};" with open("output.js", "w", encoding="utf-8") as f: f.write(js_content) print("output.js生成成功!") if __name__ == "__main__": generate_output_js()
验证结果
运行脚本后,output.js的内容会和你期望的一致:
var LIST_DATA = [ { "name": "Python", "type": "category" } ];
内容的提问来源于stack exchange,提问作者Yu Zhou
相关产品推荐
相关产品推荐

