[PYTHON] Zählen Sie bestimmte Zeichenfolgen in einer Datei

Wie viele bestimmte Zeichenfolgen sind in einer bestimmten Datei unter Linux enthalten?

Situationsbeispiel

hoge.txt


hogefugapiyohogefugapiyo
hogehogehogehogehogehoge

Wenn Sie die Anzahl der "hoge" aus einer solchen Datei wissen möchten. (Übrigens 8)

Ich habe versucht, die Anzahl der Vorkommen mit dem integrierten Befehl herauszufinden, aber es hat nicht funktioniert, also habe ich ein Skript in Python geschrieben. (Weil grep möglicherweise nicht in der Lage ist, mehrere Vorkommen in einer Zeile zu verarbeiten.)

Ein Skript, das die Anzahl bestimmter Zeichenfolgen berechnet

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.Weil es 4 war, kann ich nicht mit verwenden
        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()

Erstellen Sie diese Datei unter Linux und erteilen Sie ihr die Ausführungsberechtigung.

Wie benutzt man

$ ./match_count.py hoge.txt hoge
8

Sie können die Nummer erhalten, die mit hoge wie folgt übereinstimmt.

Ich habe auch versucht, Rohre zu stützen

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

Sie können es auch verwenden, wenn Sie möchten. Ich frage mich, ob es besser ist, wenn ich mehrere Dateien katze.

Recommended Posts

Zählen Sie bestimmte Zeichenfolgen in einer Datei
So zählen Sie Zahlen in einem bestimmten Bereich
[Sublime Text 2] Führen Sie immer eine bestimmte Datei im Projekt aus
Speichern Sie eine bestimmte Variable in tensorflow.session
Erstellen Sie eine Binärdatei in Python
Speichern Sie YAML-formatierte Dateien mit PyYAML
[GPS] Erstellen Sie eine kml-Datei mit Python
Erstellen Sie eine GIF-Datei mit Pillow in Python
Lesen Sie eine Datei mit verstümmelten Linien in Python
Erstellen Sie eine Datei, die in der Skriptsprache ausgeführt werden kann
So erstellen Sie eine JSON-Datei in Python
Klonen Sie mit einem bestimmten Zweig / Tag in GitPython
Extrahieren Sie mit Pandas Zeilen, die eine bestimmte "Zeichenfolge" enthalten
Geben Sie einen bestimmten Wert für die Variable im Tensorflow ein
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
So lesen Sie Dateien in verschiedenen Verzeichnissen
Ruft Zeilen mit bestimmten Elementen in np.where ab
Dateioperationen in Python
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Dateiverarbeitung in Python
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
Dateimanipulation mit Python
diktieren in diktieren Macht ein Diktat ein Diktat
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
Vergleichen Sie Zeichenfolgen in Python
Strings in Python umkehren
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Python2 / numpy> Ersetzen Sie nur eine bestimmte Spalte in einer Datei durch Spaltendaten aus einer anderen Datei> numpy.c_
Stoppen Sie eine Instanz mit einem bestimmten Tag in Boto3
Versuchen Sie, das DeepZoom-Dateiformat .DZI in Python zu erstellen
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
Ein Allzweckprogramm, das Linux-Befehlszeichenfolgen mit Python formatiert
Ändern Sie das Standardausgabeziel in eine Datei in Python
So importieren Sie Dateien in Python an eine beliebige Stelle
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Schreiben Sie ein Co-Autorennetzwerk in einem bestimmten Feld mit Informationen von arxiv
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Geben Sie in vielen Excel gleichzeitig bestimmte Daten in ein bestimmtes Blatt ein
Machen Sie einen Screenshot in Python
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Laden Sie eine Datei in Dropbox hoch
Suchen Sie nach Zeichenfolgen in Dateien
Dateien lesen und schreiben
Erstellen Sie ein Lesezeichen in Python
Erstellen Sie eine Dummy-Datendatei
Dateien schreiben und lesen
Exportieren Sie eine komprimierte gzip-Textdatei
Japanische JSON-Datei anzeigen
Zeichne ein Herz in Python
Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Auf jeden Fall bleibt das schnellste serielle Kommunikationsprotokoll in der Datei
Erhalten Sie mit QIIME2 OTU-Zähldaten (Mikroorganismen) als Textdatei