In [1]:
path = 'data/src/sample_for_grep.txt'

In [2]:
with open(path) as f:
    print(f.read())


XXX YYY ZZZ
YYY
aaa
XXX
ZZZ XXX
xxx

In [3]:
with open(path) as f:
    lines = f.readlines()

In [4]:
print(lines)


['XXX YYY ZZZ\n', 'YYY\n', 'aaa\n', 'XXX\n', 'ZZZ XXX\n', 'xxx']

In [5]:
print(type(lines))


<class 'list'>

In [6]:
lines_strip = [line.strip() for line in lines]
print(lines_strip)


['XXX YYY ZZZ', 'YYY', 'aaa', 'XXX', 'ZZZ XXX', 'xxx']

In [7]:
l_XXX = [line for line in lines_strip if 'XXX' in line]
print(l_XXX)


['XXX YYY ZZZ', 'XXX', 'ZZZ XXX']

In [8]:
for line in l_XXX:
    print(line)


XXX YYY ZZZ
XXX
ZZZ XXX

In [9]:
print(l_XXX[0])


XXX YYY ZZZ

In [10]:
print(l_XXX[-1])


ZZZ XXX

In [11]:
l_XXX_start = [line for line in lines_strip if line.startswith('XXX')]
print(l_XXX_start)


['XXX YYY ZZZ', 'XXX']

In [12]:
l_XXX_ZZZ_and = [line for line in lines_strip if ('XXX' in line) and ('ZZZ' in line)]
print(l_XXX_ZZZ_and)


['XXX YYY ZZZ', 'ZZZ XXX']

In [13]:
l_XXX_xxx = [line for line in lines_strip if 'xxx' in line.lower()]
print(l_XXX_xxx)


['XXX YYY ZZZ', 'XXX', 'ZZZ XXX', 'xxx']

In [14]:
l_XXX_i = [i for i, line in enumerate(lines_strip) if 'XXX' in line]
print(l_XXX_i)


[0, 3, 4]

In [15]:
l_XXX_both = [(i, line) for i, line in enumerate(lines_strip) if 'XXX' in line]
print(l_XXX_both)


[(0, 'XXX YYY ZZZ'), (3, 'XXX'), (4, 'ZZZ XXX')]

In [16]:
l_i, l_str = list(zip(*l_XXX_both))

In [17]:
print(l_i)


(0, 3, 4)

In [18]:
print(l_str)


('XXX YYY ZZZ', 'XXX', 'ZZZ XXX')

In [19]:
with open(path) as f:
    for i, line in enumerate(f):
        if 'aaa' in line:
            break

In [20]:
print(i)


2

In [21]:
print(line)


aaa


In [22]:
with open(path) as f:
    for i, line in enumerate(f):
        if line == 'ZZZ XXX\n':
            break

In [23]:
print(i)


4

In [24]:
print(line)


ZZZ XXX