#YouTube https://duckduckgo.com/?t=ffab&q=youtube-dl+sound+only&ia=qa&iax=qa
直接下载声音可以用
直接下载声音可以用
youtube-dl -F 选择格式,然后 -f 下载Forwarded from dnaugsuz
🤔 greedy 的意思就是“尽可能多地匹配”,和 lambda lifting 里那个 "lifting" 一样,一词多用。
这个… 我没有引用 regex 里的那个名词,它是另一个名词。
这个… 我没有引用 regex 里的那个名词,它是另一个名词。
Telegram
duangsuse::Echo
#PLT #Python #parsing 快看
http://news.sciencenet.cn/htmlnews/2020/1/434911.shtm
Lark - a modern parsing library for Python
PLY (Python Lex-Yacc)
https://en.wikipedia.org/wiki/Lambda_lifting
一句话总结:把不支持 (相对的)local function 化为 global function,可能需要把 free var…
http://news.sciencenet.cn/htmlnews/2020/1/434911.shtm
Lark - a modern parsing library for Python
PLY (Python Lex-Yacc)
https://en.wikipedia.org/wiki/Lambda_lifting
一句话总结:把不支持 (相对的)local function 化为 global function,可能需要把 free var…
Forwarded from dnaugsuz
之前也有说,ParserKt 的目标并不是取代 Regex 或者做 NLP 之类非常复杂的解析器(那几乎不能算单纯的解析器了,何况 Regex groups 对副作用利用比较强,对 PKT 而言用 AlsoDo 和 StatedFeed 可以做到,但不推荐)
ParserKt 的目标是为各种相对规范的编程语言提供模式匹配 read/show (back) 的能力,也提供类似代码高亮这种常见兼容用途
我不会试着让它包容万物,它只需要保持简单的核心就好,包括现在解析一些复杂语法的东西 (NumUnit 和自动 Number 运算的类型转换、Layout 缩排语法的解析)都是作为 parserkt-ext 另作打包的,就是为了尽可能降低学习开销
ParserKt 的目标是为各种相对规范的编程语言提供模式匹配 read/show (back) 的能力,也提供类似代码高亮这种常见兼容用途
我不会试着让它包容万物,它只需要保持简单的核心就好,包括现在解析一些复杂语法的东西 (NumUnit 和自动 Number 运算的类型转换、Layout 缩排语法的解析)都是作为 parserkt-ext 另作打包的,就是为了尽可能降低学习开销
Forwarded from dnaugsuz
不过,ParserKt 不能用来写命令行解析器,这个非常GG (主要是因为我开始觉得可以写,现在就有点郁闷)
Python 里用
一个参数大概就是
ParserKt 理论上可以用来做命令行解析器的核心(如果封一层来构造
Python 里用
import argparse 非常容易就可以定义一个解析器,我也写过命令行参数辅助解析一个参数大概就是
add_argument(prefix, metavar, nargs, type, default, action, help) 这几个参数,action 可以 store_true 来实现 flag 什么的(当然前提肯定是动态类型)ParserKt 理论上可以用来做命令行解析器的核心(如果封一层来构造
Contextual<String, Pattern<String, T>> 的话),但没法直接对应到 Pattern 对象,而且一旦有 nargs="+" 的情况,就十分不好处理为不可变数据了……Forwarded from dnaugsuz
其实这个
已经有 n 个就不必多解析了,比
while(true) 也可以重写为while (greedy || count < bounds.last) 的,早就该改改。已经有 n 个就不必多解析了,比
while(true) 要结构化一些Forwarded from dnaugsuz
不对,刚刚分析了一下控制流
区别在于第一次,前者至少执行一遍,相当
while (true) {
depend++
if (!p) break;
}
确有别于while (p) {
depend++
} 区别在于第一次,前者至少执行一遍,相当
do {
depend++
} while (p)Forwarded from dnaugsuz
这么说
bounds = 0..0 的情况其实我的程序不是最佳实践!没有利用循环操作的兼容性…… 也没有 require 过 paramForwarded from dnaugsuz
你说是
🤔我觉得没影响,你要拿 String 那你就拿 String。
(html!!) 还是 body?.string() ?🤔我觉得没影响,你要拿 String 那你就拿 String。
Forwarded from dnaugsuz
如果你要做,还有更好的方法吗……
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
为什么你要写
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
val html: String = client.get(LOGIN_API).body?.string() ?: throw Errors.NetError() 不是么…为什么你要写
html!! 啊,而且如果你只 parse(resp.string()) 的话调用 string() 也没问题啊Forwarded from dnaugsuz
草生,你这么编程的话…… 在一段子程序里,是一类东西都可以叫一个名字了
用户的 1:1 宠物叫 val
如非必要,请别写
真正用 var 的情况往往是 for while 里循环更新变量,你这种完全可以内联的……
用户的 1:1 宠物叫 val
pat,用户 1:N 的寄养宠物也叫 for (pat in pats) ,然后你就可以把 pat 和 pat 变成一个 var 来“复用”废“好大脑力”编造的名字了,真棒……如非必要,请别写
var …… 你要明白有些 val 都是可以 inline 进引用处的,只不过为了简化代码提升可读性才拆开成不可变具名量,你用 var 语义就全毁了。真正用 var 的情况往往是 for while 里循环更新变量,你这种完全可以内联的……