# 上海高考物化生史地政6选3 **Repository Path**: guyuming76/shgkxk ## Basic Information - **Project Name**: 上海高考物化生史地政6选3 - **Description**: TinyAgent使用 deepseek-v4-flash 获取官方pdf,转化成文本文件,并生成python查询脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 上海高考选科(3+3)查询项目 ## 一、结论先行 - 上海是 **“3+3”** 模式:语数外必考,再从 **物理、化学、生物、政治、历史、地理** 6 门中选 3 门作为等级考科目。 - 面向 **2029 年高考**(2026 年 9 月入学高一)的官方依据是: **上海市教育考试院《关于公布 2027 年普通高校本科专业选考科目要求的通知》** (发布时间 2025-02-21) 通知原文明确:**“此次报送的招生专业选考科目要求适用于 2027 年及以后全国各省(区、市)参加高考的考生。”** → 即 **2027/2028/2029……各届均适用这一版**,无需等 2029 版。 - 附件为官方 PDF(914 页): > 全国所有省份的选考科目要求统一在教育部“阳光高考”平台发布查询: > (该站有反爬,本机未抓取,可人工访问) ## 二、本项目文件 | 文件 | 说明 | |---|---| | `data/官方原文_2027本科专业选考科目要求.pdf` | 官方原始 PDF(914 页,10 MB) | | `data/xkkm_2027.csv` | 抽取后的结构化表格(Excel 可直接打开,UTF-8-BOM) | | `data/xkkm_2027.json` | 同上 JSON | | `build_dataset.py` | 由 PDF 重新生成数据(`python3 build_dataset.py `) | | `analyze.py` | 总量统计与选科组合覆盖率分析 | | `query.py` | 交互查询工具 | 数据规模:**40175 条**,覆盖 **990 所院校**。 ## 三、查询工具用法 ```bash python3 query.py 校 复旦 # 查某所院校全部专业的选科要求 python3 query.py 专业 计算机 # 按专业名查(可加院校过滤) python3 query.py 专业 计算机 同济 python3 query.py 组合 物 化 政 # 某选科组合能报哪些专业 python3 query.py 省份 上海 江苏 # 按招生省份筛选(可给多个) python3 query.py 汇总 # 科目要求总体分布(人类可读) python3 query.py 覆盖 # 六选三 35 种组合覆盖排名(人类可读) ``` ### 输出与管道 `校 / 专业 / 组合 / 省份` 的输出**一律是 CSV**(字段:省份,院校,专业代码,专业名称,科目要求,页), 提示与统计信息走 **stderr**,所以可直接用管道把多条查询串起来逐步收窄: ```bash python3 query.py 校 复旦 | python3 query.py 组合 物 化 政 python3 query.py 省份 上海 江苏 | python3 query.py 专业 计算机 python3 query.py 省份 上海 | python3 query.py 组合 物 化 生 | python3 query.py 专业 医学 python3 query.py 校 复旦 | python3 query.py 组合 物 化 政 | wc -l ``` 规则说明: - **输入**:如果 stdin 是管道且有数据,就在上游结果上继续过滤;否则(无输入/空输入/交互终端)自动从全量数据开始。 管道中的表头会被自动识别并跳过,可任意级串联。 - **重定向到文件**时输出带 UTF-8 BOM(Excel 双击不乱码);**在管道中**不带 BOM。 - `--no-header` 可关闭表头输出,例如 `python3 query.py 省份 上海 --no-header | wc -l`。 - 看提示信息:`python3 query.py 校 复旦 2>/dev/null | head` 只看 CSV;反过来加 `2>&1 >/dev/null` 只看提示。 ### 「组合」的彩色明细 `组合` 是最常用的命令:终端上直接运行时,**可报的条目显示为绿色、被卡住的显示为红色**, 结尾自动恢复白色,并给出「如何用管道取出绿色/红色条目」的提示: ```bash python3 query.py 组合 物 化 政 # 终端:绿=可报、红=卡住,一眼看清差距 python3 query.py 组合 物 化 政 --卡住 # 只要卡住(红色)的明细,纯 CSV python3 query.py 组合 物 化 政 --可报 # 只要可报(绿色)的明细,纯 CSV python3 query.py 组合 物 化 政 --卡住 | head -50 python3 query.py 组合 物 化 政 --可报 | python3 query.py 专业 医学 # 取出后继续串联 python3 query.py 组合 物 化 政 --limit 0 # 终端不限制行数(默认最多显示 500 行,避免刷屏) ``` | 选项 | 作用 | |---|---| | `--可报` / `--can` | 只输出可报条目(管道默认行为) | | `--卡住` / `--cannot` | 只输出被卡住的条目 | | `--全部` / `--all` | 全部条目;管道中会多加一列 `状态`(可 `grep '^卡住'`) | | `--limit N` | 终端最多显示 N 行,`0` 为不限制(默认 500;管道/重定向不受限) | 要点: - **颜色只在 stdout 是终端时出现**;一旦进入管道或重定向,自动变成纯白 CSV,可直接交给 `head`/`grep`/`wc` 或下一个 `query.py`。 - 终端默认显示**全部**条目(用颜色区分);管道/重定向默认**只输出可报**,避免被卡住的条目混进后续处理。 - `--全部` 输出的 `状态` 列会在下游被自动识别并剥离,所以 `组合 … --全部 | 组合 …` 照样能串联。 ### 在 less / 分页器里保留颜色 默认情况下进了管道颜色就没了(这正是为了管道处理)。想让 `less` 里依然显示红绿,需要**两件事**: 1. 让 `query.py` 强制输出颜色:加 `--color`(或 `-C`;也可用环境变量 `FORCE_COLOR=1` / `CLICOLOR_FORCE=1`) 2. 让 `less` 原样透传颜色码:加 `-R` ```bash python3 query.py 校 复旦 | python3 query.py 组合 物 化 政 --color | less -R python3 query.py 组合 物 化 政 --color | less -R # 直接分页看全部条目(不再限 500 行) ``` 用法要点: - `-R`(推荐)按原样显示颜色,同时保留其他控制字符的处理;`-r` 是更“生猛”的 raw 模式,一般不必要。 - 不想每次都写 `-R`,可设环境变量:`export LESS='-R -X'`(`-X` 让退出后不清屏),此后 `… --color | less` 即可。 - 忘了 `-R` 会怎样?那些颜色码会以 `^[[32m…` 这样的**字面文本**显示出来(就是乱码)。 - 相反,若只想要干净的 CSV 而去掉颜色:用 `--no-color`,或在管道中保持默认(不加 `--color`)即可。 - `--color` 下默认输出**全部**条目(红绿都有);只想要一种就再加 `--可报` 或 `--卡住`,例如 `python3 query.py 组合 物 化 政 --卡住 --color | less -R`。 - 进入管道/分页器后**不会再被 `--limit 500` 截断**(此时由 `less` 负责翻页);想反过来强行限制用 `--limit N` 只在终端生效,可在管道里用 `| head -N`。 ## 四、核心数据特征 科目要求写法分布(40175 条): | 要求 | 条数 | 占比 | |---|---|---| | 物和化 | 19009 | 47.3% | | 不限 | 17095 | 42.6% | | 物 | 2344 | 5.8% | | 政 | 454 | 1.1% | | 史 | 400 | 1.0% | | 物和化和生 | 206 | 0.5% | | 地 / 生 / 化 等 | 各 150–198 | ~0.4% | | 政和史 等复合 | 59 及以下 | <0.2% | **六选三组合的覆盖率**(能报的专业条目占比): - 物理+化学+政治 97.2% | 物理+化学+生物 97.1% | 物理+化学+历史 97.1% | 物理+化学+地理 96.6% - **不含物+化的组合,覆盖率上限约 50%** - 覆盖率最低:化学+生物+地理 43.8% ## 五、注意事项 1. 本目录是“拟在沪招生”的专业要求,**院校/专业每年会微调**,最终以当年(2029 年)上海市教育考试院公布的**招生专业目录**为准。 2. 上海本科以 **“院校专业组”** 为志愿填报与投档单位,专业组内实际所含专业以当年目录为准。 3. 上海高职(专科)专业**不设选考科目要求**,故不在本目录中。 4. 本数据为机器从官方 PDF 抽取(坐标还原表格,已过滤整页水印与页脚,并修复内蒙古/黑龙江单元格合并问题),抽样核对无误,但重大决策前请以官方 PDF 原文复核。