[PYTHON] Compter des chaînes spécifiques dans un fichier

Combien de chaînes spécifiques sont incluses dans un certain fichier sous Linux

Exemple de situation

hoge.txt


hogefugapiyohogefugapiyo
hogehogehogehogehogehoge

Lorsque vous voulez connaître le nombre de "hoge" à partir d'un fichier comme celui-ci. (Au fait, 8)

J'ai essayé de connaître le nombre d'occurrences avec la commande intégrée, mais cela n'a pas fonctionné, j'ai donc écrit un script en Python. (Parce que grep peut ne pas être capable de gérer plusieurs occurrences sur une seule ligne)

Un script qui calcule le nombre de chaînes spécifiques

match_count.py


# -*- coding: utf-8 -*-
#!/usr/bin/env python
 
import sys
import os.path
 
 
def clean_args(args):
    if len(args) == 2:
        search_word = args[1] 
        return (True, None, search_word)
    if len(args) != 3: 
        print "[Usage] match_count.py $filename $search_word"
        return (False, None, None)
    
    target_file_path = args[1]
    search_word       = args[2] 
 
    if not os.path.exists(target_file_path):
        print "[Error] File is not exist."
        return (False, None, None)
 
    return (True, target_file_path, search_word)
 
 
def count_words(filename, search_word):
 
    if filename is not None:
        # python 2.Parce que c'était 4, je ne peux pas utiliser avec
        stream = open(filename, 'r')
        counter = _count(stream, search_word)
        stream.close()
        return counter
    else :
        return _count(sys.stdin, search_word)
 
 
def _count(stream, search_word):
    counter = 0
    for line in stream:
        counter += line.count(search_word)
    return counter
 
   
def main():
 
    args = sys.argv
    (is_valid, filename, search_word) = clean_args(args)
    if not is_valid:
        sys.exit()
    
    print count_words(filename, search_word)
 
 
if __name__ == '__main__':
    main()

Créez ce fichier sous Linux et donnez-lui l'autorisation d'exécution.

Comment utiliser

$ ./match_count.py hoge.txt hoge
8

Vous pouvez obtenir le nombre qui correspond à hoge comme ça.

J'ai aussi essayé de soutenir les tuyaux

$ cat hoge.txt | ./match_count.py hoge
8

Vous pouvez l'utiliser même si vous le souhaitez. Je me demande si ce sera mieux si je chat plusieurs fichiers.

Recommended Posts

Compter des chaînes spécifiques dans un fichier
Comment compter les nombres dans une plage spécifique
[Sublime Text 2] Toujours exécuter un fichier spécifique dans le projet
Enregistrer une variable spécifique dans tensorflow.session
Créer un fichier binaire en Python
Enregistrer les fichiers au format YAML avec PyYAML
[GPS] Créer un fichier kml avec Python
Créer un fichier GIF en utilisant Pillow en Python
Lire un fichier contenant des lignes brouillées en Python
Créer un fichier qui peut être exécuté dans le langage de script
Comment créer un fichier JSON en Python
Cloner avec une branche / balise spécifique dans GitPython
Extraire des lignes contenant une "chaîne" spécifique avec Pandas
Entrez une valeur spécifique pour la variable dans tensorflow
Créez un fichier MIDI en Python en utilisant pretty_midi
Comment lire des fichiers dans différents répertoires
Obtenir des lignes contenant des éléments spécifiques dans np.where
Opérations sur les fichiers en Python
Analyser une chaîne JSON écrite dans un fichier en Python
Traitement de fichiers en Python
Obtenir le nom de fichier dans un dossier à l'aide de glob
Un mémorandum pour exécuter un script python dans un fichier bat
Je veux échantillonner au hasard un fichier avec Python
Manipulation de fichiers avec Python
dict in dict Transforme un dict en dict
Exécuter un fichier Python avec une importation relative dans PyCharm
Comparer des chaînes en Python
Inverser les chaînes en Python
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
Python2 / numpy> Remplacer uniquement une colonne spécifique d'un fichier par les données de colonne d'un autre fichier> numpy.c_
Arrêter une instance avec une balise spécifique dans Boto3
Essayez de créer le format de fichier DeepZoom .DZI en Python
Enregistrez le modèle pystan et les résultats dans un fichier pickle
Un programme polyvalent qui formate les chaînes de commande Linux avec python
Changer la destination de sortie standard en un fichier en Python
Comment importer des fichiers où vous le souhaitez en Python
Obtenez le nombre d'éléments spécifiques dans la liste python
Ecrire un réseau de co-auteurs dans un domaine spécifique en utilisant les informations d'arxiv
[Note] Importation de fichiers dans le répertoire parent en Python
Entrer simultanément des données spécifiques sur une feuille spécifique dans de nombreux Excel
Prendre une capture d'écran en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Télécharger un fichier sur Dropbox
Rechercher des chaînes dans les fichiers
Lire et écrire des fichiers
Créer un bookmarklet en Python
Créer un fichier de données factice
Écrire et lire des fichiers
Exporter un fichier texte compressé gzip
Afficher le fichier JSON japonais
Dessinez un cœur en Python
Exporter la liste de clés incluse dans S3 Bucket dans un fichier
Traitez le contenu du fichier dans l'ordre avec un script shell
Quoi qu'il en soit, le journal de communication série le plus rapide est laissé dans le fichier
Obtenez les données de comptage OTU (microorganismes) sous forme de fichier texte à l'aide de QIIME2