Мне нужно определить некоторые места в файле, где могут быть определенные маркеры. Я начал с мысли, что буду использовать list.index, но вскоре обнаружил, что возвращает первый (и только первый) элемент. поэтому я решил реализовать свое собственное решение, которое было
count=0
docIndex=[]
for line in open('myfile.txt','r'):
if 'mystring' in line:
docIndex.append(count)
count+=1
Но это правильно на Python. Должно быть более простое решение, так как это Python. Охотясь вокруг этого сайта и Интернета, я придумал что-то немного лучше
newDocIndex=[]
for line in fileinput.input('myfile',inplace=1):
if 'mystring' in line:
newDocIndex.append(fileinput.lineno())
Я знаю, что это слишком много информации, но с тех пор, как вчера вечером я закончила выпускные экзамены, я хорошо подумала - это Python, и мы хотим добиться успехов этим летом - давайте попробуем понять список
так я и сделал:
[fileinput.lineno() for line in fileinput.input('myfile',inplace=1) if 'mystring' in line]
и получил пустой список. Поэтому я сначала предположил, что проблема в том, что элемент в for должен быть элементом, который используется для построения списка. То есть, если бы у меня была строка вместо fileinput.lineno()
, у меня был бы непустой список, но это не проблема.
Можно ли свести описанный выше процесс к пониманию списка?
Используя ответ, но настраивая его для удобства чтения
listOfLines=[lineNumb for lineNumb,dataLine in enumerate(open('myfile')) if 'mystring' in dataLine]