文本列表按规则抽取
用数学表达式从「每行一项」的列表里抽行:变量 i 是行号,只支持加减乘除取余、括号与一元正负号,非 0 即命中;不使用 eval,非法表达式直接报错并支持行号从 0 开始与结果标注行号。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
列表
抽取结果
只输出表达式命中的行。
输入列表与表达式即可按规则抽取
参与计算: 0 · 命中: 0 · 最大行号: 0
这个工具能做什么
- 抽奇数行、每 3 行取 1 行这类规律性抽样,例如 i % 3 == 0 写成 1 - i % 3 配合「必须等于 1」。
- 按行号公式挑选固定位置的行,例如 i / 100 == 1 时取第 100 到 199 行(配合「必须等于 1」)。
- 从一长串数据里按规律取出子集,不用写代码也不用导入 Excel。
示例
输入
a b c d e f g h i j
输出
a c e g i
变量 i 是行号(默认从 1 开始),表达式 i % 2 对奇数行取 1、偶数行取 0,非 0 即命中,所以输出奇数行。
常见问题
表达式支持哪些运算?
只支持 `+ - * / % ( )`、一元正负号、数字和变量 i,没有比较运算符(== 会报错),也没有函数与乘方。想让某个条件成立,就把它写成一个取值为 1 的算式,然后把「命中条件」改成「必须等于 1」。
行号从 1 还是 0 开始?
默认从 1 开始,和列表里的「第几行」一致;需要按数组下标思考时把「变量 i 的含义」改成从 0 开始,此时第一行的 i 是 0。行号是在丢掉空行之后重新编的。
为什么 1/2+1/2 也能命中?
因为它们的结果正好等于 1,而浮点数在双精度下 0.5+0.5 是精确的。但像 0.1+0.2 会得到 0.30000000000000004,用「必须等于 1」判断时可能差一点点,建议让表达式直接取 0/1 这类整数结果。
写错了会怎样?
非法表达式(比如 i + 、i % 2 == 0、带函数名、除数为 0)会立刻报错,不会给出半截结果。表达式先编译一次,只有在能算出第一个行号的值之后才开始逐行计算。
关键词:按规则抽取表达式筛选list expression行号公式数学表达式percent pick取奇数行取偶数行