Форум сайта python.su
0
Дан текстовый файл. Задача при нахождении в строке подстроки ‘_aa’ проверить все последующие строки до следующего вхождения ‘_aa’, если в этом массиве строк встречается подстрока ‘_bb’, то проверить символ, следующий за ‘_aa’, ‘_bb’. В случае несовпадения вывести номер строки и саму строку.
m1=[] m3=[] m4=[] k1=0 k2=0 f = open(r'file.txt') lines = f.readlines() f.close() for i, lin in enumerate(lines): if (lin.find('_st') is not (-1)): m2 = [lin[lin.find('_aa')+3],i] m1.append(m2) for a in m1: m4 = [k2,k1+1,a[1]-1] m3.append(m4) k1 = a[1]-1 k2 = a[0] m3.append([k2,k1,i]) for b in [1,2,3,4,5]: for i, lin in enumerate(lines): if ((i<=m3[b][2]) and (i>=m3[b][1]) and (lin.find('_bb') is not (-1)): if (lin[lin.find('_lv')+3] != m3[b][0]): print 'line', i print lin
Отредактировано lyncs (Июль 22, 2015 19:49:18)
Офлайн
253
import re data=u""" _aa1 _aa2 _bb2 _aa3 _bb5 """.split("\n") def prc(d): a=None for j,i in enumerate(d): fnd=re.search("_aa(.)",i) if fnd: a=fnd.group(1) else: fnd=re.search("_bb(.)",i) if fnd: b=fnd.group(1) if b==a: yield j,i print(list(prc(data)))
Офлайн
.
Отредактировано J.R. (Фев. 27, 2016 15:51:39)
Офлайн
3
Както так…
with open(r'file.txt') as f: lines = f.readlines() for i, lin in enumerate(lines): if '_aa' in lin: num_aa = lin[lin.find('_aa')+3] if '_bb' in lin: num_bb = lin[lin.find('_bb')+3] if num_aa != num_bb: print i, lin
Отредактировано Iskatel (Авг. 3, 2015 05:34:42)
Офлайн