Tipps: [Python] Extrahieren Sie nur Zeilen, die keine bestimmte Zeichenfolge enthalten

Zweck

Extrahieren Sie nur Zeilen, die keine bestimmte Zeichenfolge enthalten.

Punkt

In einem solchen Fall ist Pythons `` `in``` praktisch.

Ob eine bestimmte Zeichenfolge A die Zeichenfolge B enthält oder nicht, kann durch die folgende Syntax bestimmt werden.

[String B.] in [Zeichenfolge A.]

Der Rückgabewert ist ein logischer Wert.

Illustration

Verwenden Sie `` `in```, um nur die Zeilen zu extrahieren, die keine bestimmte Zeichenfolge enthalten.

Angenommen, Sie möchten nur die Zeilen aus dem folgenden Satz abrufen, die kein bestimmtes Wort enthalten.

example.txt


Auf dem Schreibtisch liegt ein Apfel.
Auf dem Schreibtisch liegt ein Apfel.
There is an apple on the table.
Auf dem Schreibtisch liegt eine Banane.
Auf dem Schreibtisch liegt eine Banane.
There is a banana on the table.

Die Liste der Wörter, die Sie ausschließen möchten, lautet wie folgt.

filter.txt


Apfel
apple
Banane

Das Skript in einem solchen Fall lautet wie folgt.

fitrHavingLine.py


#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

"""
Geben Sie eine Zeile aus, die keine Daten in der Referenzdatei enthält.
"""
__author__  = "Kazuki Nakamae <[email protected]>"
__version__ = "0.00"
__date__    = "2 Jun 2017"

import sys

def fitrHavingLine(infn,reffn,outfn):
    """
    @function   fitrHavingLine();
Geben Sie eine Zeile aus, die keine Daten in der Referenzdatei enthält.
    @param  {string} infn :Eingabedatei
    @param  {string} refdir :Referenzdatei
    @param  {string} outfn :Ausgabedatei
    """

    inf = open(infn, 'r')
    for infline in inf:
        isNothing = True
        ref = open(reffn, 'r')
        #Setzen Sie das Urteil auf False, wenn die Zeichenfolge in der Referenzdatei vorhanden ist
        for refline in ref:
            if refline.strip() in infline:
                isNothing=False
                break
        ref.close()
        if isNothing:
            outf    =   open(outfn, 'a')
            outf.write(infline)
            outf.close()
    inf.close()


if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)

    if (argc != 4):   #Argumentprüfung
        print("USAGE : python3 fitrHavingLine.py <INPUT FILE> <REFERENCE FILE> <OUTPUT FILE>")
        quit()

    fitrHavingLine(argvs[1],argvs[2],argvs[3])
quit()

Geben Sie Folgendes in bash ein:

python3 fitrHavingLine.py example.txt filter.txt out.txt

Die Ausgabe ist wie folgt.

out.txt


Auf dem Schreibtisch liegt ein Apfel
Auf dem Schreibtisch liegt eine Banane
There is a banana on the table.

abschließend

if refline.strip() in infline:
                isNothing=False
                break

Im Gegenteil, wenn Sie den Teil von ändern, ist es möglich, die Zeile zu verarbeiten, die ein bestimmtes Zeichen oder nur eine bestimmte Zeile enthält.

Dies kann nützlich sein, wenn Sie Daten mit verschiedenen Elementen wie CSV-Dateien verarbeiten.

das ist alles. Vielen Dank.

Recommended Posts

Tipps: [Python] Extrahieren Sie nur Zeilen, die keine bestimmte Zeichenfolge enthalten
Extrahieren Sie mit Pandas Zeilen, die eine bestimmte "Zeichenfolge" enthalten
Extrahieren Sie nur Elemente, die bestimmte Bedingungen in Python erfüllen
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
[Python] Extrahiert Datenrahmen von Pandas, die einer bestimmten Spalte nicht mit anderen Datenrahmen entsprechen
Ein Python-Einzeiler, der Json hübsch druckt. Entkomme nicht Japanisch.
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
[Python] Verwenden Sie eine Zeichenfolgenfolge
Extrahieren Sie nur Python für die Vorverarbeitung
Stellt fest, dass ich allmählich verstehe, weil ich Python selbst nicht gut verstehe
[Python] So erzwingen Sie, dass eine Methode einer Unterklasse einen bestimmten Prozess ausführt
Ein Datensatz, den GAMEBOY mit Python nicht erstellen konnte. (PYBOY)
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
Python-Spezialcodec, der zu wissen scheint, aber nicht weiß