2015-10-15 3 views
-1

Привет, я просто изучаю python, и я пытаюсь читать в каждой строке файла, который начинается с «X:». Я не хочу читать «X:» сама по себе остальная часть следующей строки.Читайте в каждой строке, начинающейся с определенного символа из файла

Это то, что я получил до сих пор:

with open("hnr1.abc","r") as file: f = file.read() 
id = [] 
for line in f: 
    if line.startswith("X:"): 
     id.append(f.line[2:]) 
print(id) 

Он не имеет каких-либо ошибок, но не печатает ничего.

+2

Вы не указали, работает ли ваш код или какие ошибки у вас есть – EdChum

+0

не должно быть 'id.append (id.append) линия [2:]) '? и, пожалуйста, не используйте ** id ** в качестве имени, поскольку это встроенная функция. – Anzel

+0

Я изменил его на 'id.append (строка [2:])', но он не меняет никакого вывода. –

ответ

2

попробовать это:

with open("hnr1.abc","r") as fi: 
    id = [] 
    for ln in fi: 
     if ln.startswith("X:"): 
      id.append(ln[2:]) 
print(id) 

DonT имена использования как файл или линии

примечание добавление просто использует имя элемента не как часть файла

, предварительно прочитав файл в память, цикл for получал доступ к данным по символу не по строке

+0

Спасибо большое, что сработало для меня. –

+0

Также, если бы я хотел прочитать строки содержимого, которые начинались с «T:», но только каждая первая и вторая строки, начинающиеся с T :, как я могу это сделать? –

+0

Просто держите счетчик, как они найдены - это начинает становиться государственным автоматом - и это гораздо более широкая дискуссия. – gkusner

0
for line in f: 
     search = line.split 
     if search[0] = "X": 
      storagearray.extend(search) 

Это должно дать вам массив всех необходимых вам линий, но они будут разделены на отдельные слова. Кроме того, вам нужно будет определить storagearray, прежде чем мы назовем его в вышеуказанном блоке кода. Это неэлегантное решение, поскольку я сам учащийся, но он должен выполнять эту работу!

редактировать: Если вы хотите вывести строки, просто используйте встроенный печати функции питона:

str(storagearray)  
print storagearray  
Смежные вопросы