使用布尔AND计算行中字符串的出现次数

时间:2018-06-04 15:50:42

标签: python string python-3.x text

我是Python的新手,但是需要读取文本文件的行并使用布尔值来计算多个字符串的出现次数。例如,如果一个特定的行包含'blue'和'green',我需要计算这个行的真实数量。这是我到目前为止所做的。

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

感谢您的协助。

2 个答案:

答案 0 :(得分:2)

使用正则表达式

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正则表达式边界

答案 1 :(得分:1)

这是在忽略大小写的同时匹配整个单词的一种方法。因此,例如,蓝莓或温室不会被捕获。

我们在这里使用的技巧是检查一行中的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