Получить подсчет всех возможных подстрок длины n в файле? (исключая пробелы)

использовать

FileReader.readAsArrayBuffer(Blob|File)

, а не

FileReader.readAsDataURL(Blob|File)
1
задан mcvkr 11 March 2019 в 19:25
поделиться

4 ответа

так что соблазн здесь заключается в том, чтобы вкладывать циклы ... но вы не хотите этого делать, конечно, не для N> 3 ...

В Python есть две приятные вещи, которые сделают этот довольно простой

  • фильтр
  • collection.Counter

.

from collections import Counter

s = open(somefile).read()
# now you have a string with contents of file.
l = s.split()
# now you have a list of words of all lengths
l_filtered = filter(lambda x: len(x)==n, l)
#now you have a filtered list of only words of len n
print (Counter(l_filtered))
#your answer as a dict like Counter object
0
ответ дан Grady Player 11 March 2019 в 19:25
поделиться

что-то подобное ниже может сделать то, что вам нужно:

while read line 
do 
  for word in $line 
  do 
  [[ ${#word} -eq 3 ]] && echo "$word" $(grep -c "$word" your_file)  
  done 
done < your_file

Он будет читать ваш файл построчно, слово за словом. Если длина слова равна 3, он выведет слово и количество его вхождений в файл

0
ответ дан funkyjelly 11 March 2019 в 19:25
поделиться

Вы можете использовать это awk решение, чтобы получить список всех n буквенных подстрок и их частот:

awk -v n=4 '{
for (i=1; i<=NF; i++)
   for (j=1; j<=length($i)-n+1; j++)
      w[substr($i, j, n)]++
}
END {
   for (i in w) print i, w[i]
}' file

appl 2
ensi 1
nana 1
mang 1
sive 1
anan 1
nsiv 1
grea 1
pens 1
xpen 1
bana 1
ples 2
pple 2
expe 1
reat 1
ango 1
0
ответ дан anubhava 11 March 2019 в 19:25
поделиться

Вы также можете попробовать 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
$kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
}" 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 как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
$kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
$kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
}" 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 как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
}" 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
$kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
}" 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 как

$ 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 "

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112] $kv{

Вы также можете попробовать Perl

[110]

с вашими заданными входами

[111]

Вы можете параметризовать внутри блока BEGIN как

[112]}" 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 $
0
ответ дан mcvkr 11 March 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: