Conseils: [Python] Extraire uniquement les lignes qui ne contiennent pas de chaîne spécifique

Objectif

Extrayez uniquement les lignes qui ne contiennent pas de chaîne spécifique.

point

Dans un tel cas, le in de python est pratique.

Le fait qu'une certaine chaîne de caractères A contienne ou non la chaîne de caractères B peut être déterminé par la syntaxe suivante.

[Chaîne B] in [Chaîne A]

La valeur de retour est une valeur logique.

Illustration

Utilisez in pour extraire uniquement les lignes qui ne contiennent pas de chaîne particulière.

Par exemple, supposons que vous souhaitiez obtenir uniquement les lignes qui ne contiennent pas un mot spécifique de la phrase suivante.

example.txt


Il y a une pomme sur le bureau.
Il y a une pomme sur le bureau.
There is an apple on the table.
Il y a une banane sur le bureau.
Il y a une banane sur le bureau.
There is a banana on the table.

La liste des mots que vous souhaitez exclure est la suivante.

filter.txt


pomme
apple
banane

Le script dans un tel cas est le suivant.

fitrHavingLine.py


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

"""
Sortez une ligne qui ne contient pas de données sur le fichier de référence.
"""
__author__  = "Kazuki Nakamae <[email protected]>"
__version__ = "0.00"
__date__    = "2 Jun 2017"

import sys

def fitrHavingLine(infn,reffn,outfn):
    """
    @function   fitrHavingLine();
Sortez une ligne qui ne contient pas de données sur le fichier de référence.
    @param  {string} infn :Fichier d'entrée
    @param  {string} refdir :Fichier de référence
    @param  {string} outfn :Fichier de sortie
    """

    inf = open(infn, 'r')
    for infline in inf:
        isNothing = True
        ref = open(reffn, 'r')
        #Définissez le jugement sur False si la chaîne de caractères du fichier de référence existe
        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):   #Vérification des arguments
        print("USAGE : python3 fitrHavingLine.py <INPUT FILE> <REFERENCE FILE> <OUTPUT FILE>")
        quit()

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

Entrez ce qui suit dans bash:

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

La sortie est la suivante.

out.txt


Il y a une pomme sur le bureau
Il y a une banane sur le bureau
There is a banana on the table.

en conclusion

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

Au contraire, si vous modifiez la partie de, il sera possible de traiter la ligne contenant un caractère spécifique ou seulement une ligne spécifique.

Cela peut être utile lors de la gestion de données avec divers éléments tels que des fichiers csv.

c'est tout. Merci beaucoup.

Recommended Posts

Conseils: [Python] Extraire uniquement les lignes qui ne contiennent pas de chaîne spécifique
Extraire des lignes contenant une "chaîne" spécifique avec Pandas
Extraire uniquement les éléments qui répondent à des conditions spécifiques en Python
[Python] Ne laissez que les éléments commençant par une chaîne de caractères spécifique dans le tableau
[Python] Extrait les blocs de données de Pandas qui ne correspondent pas à une colonne spécifique avec d'autres blocs de données
Un one-liner Python qui imprime json json. N'échappez pas au japonais.
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
Un ensemble de fichiers de script qui font wordcloud avec Python3
[Python] Utiliser une séquence de chaînes
La liste Python n'est pas une liste
Extraire uniquement Python pour le prétraitement
Des notes que je comprends progressivement car je ne comprends pas bien Python moi-même
[Python] Comment forcer une méthode d'une sous-classe à effectuer un processus spécifique
Un enregistrement que GAMEBOY n'a pas pu être fait avec Python. (PYBOY)
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Un codec Python spécial qui semble savoir mais ne sait pas