Определение функции для подсчета количества строк в файле, содержащем определенную подстроку - PullRequest
0 голосов
/ 22 февраля 2020

Я вроде как новичок в Python. Я пытаюсь определить функцию, которая может подсчитать количество строк в файле, содержащем определенную подстроку. Я также хочу посчитать строки, которые имеют несколько значений моей подстроки, равными 1.

Вот мой код:

def CLT(filename):
    with open(filename,'r') as f:
        pattern='ing'
        count=a=0
        k=f.readlines()
        for line in k:
            if pattern in k[a:]:
                count += 1
        return count

print( CLT('random_file.txt') )

Предположим, что в моем файле 25 экземпляров, в которых есть строка "str" появляется, но у него есть 2 строки, где 2 'str' появляются на одной строке. Таким образом, идеальный результат для этой задачи должен быть 23.

Но он возвращает 0 как количество строк. Я также признаю, что мой код не выполняет ту часть, в которой строки с несколькими подстроками будут считаться только как 1. Что я могу сделать, чтобы улучшить этот код?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

В вашем коде есть небольшая ошибка:

if pattern in k[a:]:

должно быть:

if pattern in line[a:]:

Похоже, вы позиционируете себя, чтобы использовать a, чтобы сохранить отслеживать, когда вы уже нашли строку в строке, и теперь вы ищете дополнительное вхождение, но если нет, то вы должны удалить его, поскольку это усложняет логику c.

В противном случае, если вы используете a, чтобы показать индекс того, где вы уже нашли вхождение строки в строке, вам необходимо убедиться, что вы снова посмотрите на индекс a + 1, чтобы вы не находили одно и то же вхождение снова и снова и заканчиваться бесконечным l oop, когда вы добавляете al oop для проверки дальнейших вхождений в той же строке.

0 голосов
/ 22 февраля 2020

Вот код, который вы можете попробовать,

def CLT(filename):
    with open(filename, 'r') as f:
        pattern = 'ing'
        count = 0
        for line in f:
            if pattern in line:
                count += 1
        return count


print(CLT('random_file.txt'))

Надеюсь, это вам поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...