我正试图用pyparsing来解析一条线.该行由许多(键,值)组成.我想得到的是(键,值)列表.一个简单的例子:
ids = 12 fields = name
Run Code Online (Sandbox Code Playgroud)
应该导致类似于: [('ids', '12'), ('fields', 'name')]
一个更复杂的例子:
ids = 12, 13, 14 fields = name, title
Run Code Online (Sandbox Code Playgroud)
应该导致类似于: [('ids', '12, 13, 14'), ('fields', 'name, title')]
PS:结果列表中的元组只是一个例子.它可能是一个字典或其他列表或其他什么,它并不重要.
但无论我到现在为止做了什么,我得到的结果如下:
[('ids', '12 fields')]
Pyparsing正在吃下一把钥匙,考虑到它也是价值的一部分.
这是一个示例代码:
import pyparsing as P
key = P.oneOf("ids fields")
equal = P.Literal('=')
key_equal = key + equal
val = ~key_equal + P.Word(P.alphanums+', ')
gr = P.Group(key_equal+val)
print gr.parseString("ids = 12 fields = name")
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗 ?谢谢.
我知道在文件中查找一个字符串的有效方法(kmp),或文件中的各种字符串(trie)
但是,多年以来,我一直想知道是否有一种方法(并且在某种程度上认为这是不可能的)来搜索多个文件的多个字符串
假设我有一百万个文件,我想回答诸如"查找具有字符串"香蕉","摩托艇"和"白狐""的查询.什么是有效的算法?有吗?
当然,可以在线性时间内搜索要搜索的文件大小.但对于大量的大文件来说,这似乎是不可行的.谷歌的存在似乎表明实际上有一个非常快的算法来做到这一点.也许甚至一个这样的问题,即每个查询只取决于查询大小,而不是文本大小的数据库(当然,这样的算法会涉及输入文件的一些预处理)
我认为必须有一个这样的算法(谷歌做它!)但我的搜索没有发现任何东西.
我有一个用作array_agg窗口函数的查询,即带有over (...)子句。我只想获取此数组聚合中的一组不同值,但这在 Postgres 9.4 中并未实现:
对于以下(简化的)查询,
with test_data(day, daytime, song) as (
select 'MON', 'morning', 'A'
union all
select 'MON', 'morning', 'B'
union all
select 'MON', 'afternoon', 'A'
union all
select 'TUE', 'afternoon', 'B'
)
select distinct
day,
first_value(daytime) over w as started,
array_agg(distinct daytime) over w as daytimes,
array_agg(distinct song) over w as songs
from test_data
window w as (partition by day order by daytime ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING);
Run Code Online (Sandbox Code Playgroud)
Postgres 返回以下内容:
SQLERROR …Run Code Online (Sandbox Code Playgroud) 我正在写一个小游戏,其中一部分是跟踪玩家的分数.为此,我将地图初始化如下:
// given: players: List<Player>
var scores: MutableMap<Player, Int> = mutableMapOf(*players.map { it to 0 }.toTypedArray())
Run Code Online (Sandbox Code Playgroud)
困扰我的是我需要使用.toTypedArray()map { it to 0 }之前的结果才能应用扩展运算符*.有办法避免这种情况吗?通过压缩两个数组创建映射时也会出现同样的问题:
// does not compile:
mapOf(*a1.zip(a2))
// works but more verbose:
mapOf(*a1.zip(a2).toTypedArray())
Run Code Online (Sandbox Code Playgroud) 我有一列sort_order具有唯一约束的列。以下SQL在Postgres 9.5上失败:
UPDATE test
SET sort_order = sort_order + 1;
-- [23505] ERROR: duplicate key value violates unique constraint "test_sort_order_key"
-- Detail: Key (sort_order)=(2) already exists.
Run Code Online (Sandbox Code Playgroud)
显然,如果sort_order值在更新之前是唯一的,则在更新之后它们仍将是唯一的。为什么是这样?
相同的语句在Oracle和MS SQL上工作正常,但在MySQL和SQLite上失败。
这是SQL小提琴的完整设置代码:
DROP TABLE IF EXISTS test;
CREATE TABLE test (
val TEXT,
sort_order INTEGER NOT NULL UNIQUE
);
INSERT INTO test
VALUES ('A', 1), ('B', 2);
Run Code Online (Sandbox Code Playgroud) 我正在 docker 容器内测试我的 postgres 数据库的备份/恢复过程。
我像这样转储我的数据库:
$ docker exec -ti my_postgres_container pg_dump -Fc -U postgres > db.dump
Run Code Online (Sandbox Code Playgroud)
之后,我尝试像这样恢复它:
$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container pg_restore -U postgres -c -d postgres db.dump
Run Code Online (Sandbox Code Playgroud)
该命令返回时没有输出或错误,但没有任何反应。
因此,我尝试像这样手动恢复它:
$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container bash
root@fdaad610bee3:/# pg_restore -U postgres -c -d postgres db.dump
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
为什么在尝试读取我的数据库转储时 pg_restore 出现段错误?
在 Kotlin 1.4.30 中,当我输入
open interface I
Run Code Online (Sandbox Code Playgroud)
Kotlin 编译器警告我modifier 'open' is redundant for 'interface'。这完全有道理:当然接口是开放的,否则它们将毫无用处。
但是,反射库似乎与此相矛盾:
interface I
println(I::class.isOpen) // prints 'false'
Run Code Online (Sandbox Code Playgroud)
这有什么意义?的KDocisOpen非常简短:
true如果这个类是开放的。
Kotlin 中“开放”的确切定义是什么? 我认为这意味着“开放被该文件之外的类进行子类型化的可能性”。
我有以下预编译的脚本插件,它应用了一个 Gradle 核心插件和一个外部插件(通过id(...)):
// buildSrc/main/kotlin/my-template.gradle.kts:
import org.gradle.api.JavaVersion
plugins {
java
id("com.diffplug.gradle.spotless") // commenting this line "fixes" the problem, WHY?
}
java {
sourceCompatibility = JavaVersion.VERSION_11
}
Run Code Online (Sandbox Code Playgroud)
与此build.gradle.kts在buildSrc:
// buildSrc/build.gradle.kts:
repositories {
maven("https://nexus.ergon.ch/repository/secure-public/")
}
plugins {
`kotlin-dsl`
id("com.diffplug.gradle.spotless") version "3.25.0"
}
Run Code Online (Sandbox Code Playgroud)
构建失败并显示以下消息: Expression 'java' cannot be invoked as a function. The function 'invoke()' is not found
$ ./gradlew tasks
> Task :buildSrc:compileKotlin FAILED
The `kotlin-dsl` plugin applied to project ':buildSrc' enables …Run Code Online (Sandbox Code Playgroud) 我需要生成验证码并将其发送给客户,以便客户稍后可以提供代码并进行验证.我希望能够在不将验证码存储在数据库中的情况下执行此操作,即代码应该是自包含的.
如何生成代码并防止客户猜测有效代码是什么?显然,我不能完全排除一个幸运的猜测,但我希望这样的事件的概率相当小,同时保持代码长度小.代码可能包含数字和字母.
例如,一个非常基本的验证码将是这样的:随机生成数字1122.现在,计算验证码11226(1122并附加其校验和6=1+1+2+2).因此,如果客户发送回来11226我将能够验证它,但当然这很容易被篡改.有没有办法生成这样的代码?
编辑:问题是发送验证码的系统和验证验证码的系统是分开的,这两个系统之间没有共享信息.即使是随机生成的数字(1122在示例中)也无法为验证系统所知.让我再举一个例子:在我的国家,有一个名为"橙色星期三"的东西.如果您有通过短信收到的代码,您可以获得2张电影票的价格(如果您是Orange客户,则发送短信并通过短信接收代码).但是,此代码与任何内容(电话号码或类似内容)无关:我可以将代码提供给其他人,但仍然有效.我需要这种验证码.
我正在通过Gradle的war插件构建一个webapp.为了禁用Tomcat的会话持久性,我需要将文件context.xml放在META-INFwar的根目录中.
我尝试了以下方法:
src/main/webapp/META-INF/context.xml主项目的文件src/main/resources/META-INF/context.xml主项目的文件但是,当我使用gradle clean war生成项目时,生成的war文件包含一个META-INF只有一个MANIFEST.MF.好像我的目录被覆盖了.
我如何context.xml参加战争?
postgresql ×3
algorithm ×2
gradle ×2
kotlin ×2
backup ×1
cryptography ×1
dictionary ×1
docker ×1
grammar ×1
meta-inf ×1
parsing ×1
precompiled ×1
pyparsing ×1
python ×1
random ×1
reflection ×1
search ×1
sql ×1
verification ×1
war ×1