Подсчет вхождений строки в строки с логическим И - PullRequest
0 голосов
/ 04 июня 2018

Я очень плохо знаком с Python, но мне нужно прочитать строки текстового файла и посчитать вхождения нескольких строк, используя логическое AND.Например, если конкретная строка содержит «синий» И «зеленый», мне нужно посчитать количество строк, для которых это верно.Это то, что я имею до сих пор.

import re
file = open("text.txt")
lines = file.readlines()
print(lines.count('blue')
file.close()

Ваша помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вот один из способов сопоставить целые слова, игнорируя регистр.Так, например, черника или теплица не будут пойманы.

Уловка, которую мы здесь используем, состоит в том, чтобы проверить set слов в строке, является надмножеством {'blue', 'green'}.

import re
from io import StringIO

mystr = StringIO("""animal door read blue
green purple blue yellow
dolphin giraffe turtle blue
life green battle blue""")

counter = 0

# replace mystr with open('file.txt', 'r')
with mystr as fin:
    for line in fin.readlines():
        words = set(line.rstrip('\n').lower().split())
        if words >= {'blue', 'green'}:
            counter += 1

print(counter)  # 2
0 голосов
/ 04 июня 2018

Использование Регулярное выражение :

import re
count = 0
with open(filename, "r") as infile:
    for line in infile:
        if re.search(r"\bblue\b", line, flags=re.IGNORECASE) and re.search(r"\bgreen\b", line, flags=re.IGNORECASE):
            count += 1
print(count)
  • \b Граница регулярного выражения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...