如何检查文本文件中的行是否包含特定字符

时间:2018-03-28 23:07:54

标签: python text character counter

如何查看某行是否在文本文件行的任何位置包含某个字符?我目前有:

charCounter=0
with open('file', 'r') as f:
    for line in f:
        if 'a' in line:
            charCounter=charCounter+1

但是,计数器增量的唯一时间是字符是行中的第一个字符。如果角色出现在任何一点的行中,我需要检查它。

1 个答案:

答案 0 :(得分:0)

检查中途的舌头,为什么只计算一个角色,你可以更容易地计算所有角色:

from collections import Counter

c=Counter()
with open('file') as f:
    c=Counter(ch for line in f for ch in line)

>>> c
Counter({' ': 99, '-': 85, 'e': 12, 'o': 12, '>': 11, '<': 10, 'n': 8, '\n': 7, 't': 7, 'd': 6, '/': 5, 'i': 5, 'm': 5, 'r': 4, '|': 4, 'a': 3, 'g': 3, 'f': 3, 'h': 3, '+': 2, 'T': 2, 'b': 2, 'y': 2, '!': 1, "'": 1, '.': 1, '1': 1, 'D': 1, 'J': 1, 'R': 1, 'k': 1, 'l': 1, 's': 1, 'w': 1, 'v': 1, 'x': 1})

然后知道你的具体人物数量:

>>> c['a'] 
3

(在此特定文件中,有3 'a&#39;`)

或者你可以跳过计数器,如果你真的只想要一个角色并在sum中使用相同的理解:

with open('file') as f:
    c=sum(1 for line in f for ch in line if ch=='a')

>>> c
3

如果您想要包含'a'的行,您可以这样做:

with open('file') as f:
    print sum(1 for line in f if 'a' in line)