gpt4 book ai didi

python - 计算文件中所有可能的长度为 n 的子字符串? (不包括空格)

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:13 24 4
gpt4 key购买 nike

我有一些导出文件,你可以假设它们在一行中有很多单词并且没有一行是特殊的。我看到这个帖子在一个文件中生成不同的词

https://unix.stackexchange.com/questions/286464/all-possible-permutations-of-words-in-different-files-in-pairs

还有一些在文件中进行单词搜索的其他变体。

但是对于长度为 4 的子串,我需要的是类似这样的东西。这里我们有子字符串和它的计数。

示例文件内容

no apples 
no apples
mango is great
banana is expensive
test

示例输出是

appl 2
pple 2
ples 2
mang 1
ango 1
grea 1
reat 1
bana 1
anan 1
nana 1
expe 1
xpen 1
pens 1
ensi 1
sive 1
nsiv 1
test 1

子串不一定有任何意义,它们只是文件的子串。文件不大,最坏情况下不到5MB,实际上有多个文件,但我在分析前合并了它们。

我想在 SO 中提问,因为万一这需要编写一个 shell/phyton 脚本,但如果我们可以使用命令轻松地做到这一点,那就更好了。

最佳答案

你也可以试试 Perl

perl -lne ' while(/(\S+)/g) { $x=$1; 
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print "$_ $kv{$_}" for(keys %kv) } ' file

根据您给定的输入

$ cat test.txt
no apples
no apples
mango is great
banana is expensive
test

$ perl -lne ' while(/(\S+)/g) { $x=$1;
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print "$_ $kv{$_}" for(keys %kv) } ' test.txt
nsiv 1
xpen 1
reat 1
ensi 1
sive 1
ples 2
pple 2
test 1
appl 2
expe 1
anan 1
mang 1
ango 1
bana 1
pens 1
grea 1
nana 1

$

您可以在 BEGIN block 内参数化为

$ perl -lne ' BEGIN { $t=qr(\w{5}) } 
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print "$_ $kv{$_}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1

$

关于python - 计算文件中所有可能的长度为 n 的子字符串? (不包括空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com