Python: извлечь одну строку из файла

Очень новое, пожалуйста, будьте милы и объясните медленно и четко. Спасибо:)

Я пытался найти, как извлечь одну строку в python, но все ответы кажутся намного более сложными (и запутанными), чем то, что я ищу. У меня есть файл, в нем много строк, я хочу выделить только строку, начинающуюся с #.

Мой файл.txt:

"##STUFF"                                                                                                       
"##STUFF"                                                                                                       
#DATA 01 02 03 04 05
More lines here
More lines here
More lines here

Моя попытка сценария:

file = open("file.txt", "r")

splitdata = []

for line in file:
    if line.startswith['#'] = data
    splitdata = data.split()
    print splitdata

#expected output:
#splitdata = [#DATA, 1, 2, 3, 4, 5]

Ошибка, которую я получаю:

line.startswith ['#'] = данные

Ошибка типа: объект builtin_function_or_method не поддерживает назначение элементов

Кажется, это означает, что мне не нравятся мои "= data", но я не уверен, как сказать, что я хочу взять строку, начинающуюся с #, и сохранить ее отдельно.

3 ответа

Решение

Исправьте оператор if и отступ,

for line in file:
    if line.startswith('#'):
        print line

Несмотря на то, что вы относительно новичок, вы должны начать учиться использовать понимание списков, вот пример того, как вы можете использовать его в своей ситуации. Я объяснил детали в комментариях, и комментарии сопоставлены с соответствующим порядком.

splitdata = [line.split() for line in file if line.startswith('#')]
# defines splitdata as a list because comprehension is wrapped in []
                          # make a for loop to iterate through file
                                           #checks if the line "startswith" a '#'
                                           # note: you should call functions/methods using the () not []
             # split the line at spaces if the if startment returns True

Это условие if, которое ожидает предикатный оператор, а не присваивание.

if line.startswith('#'):

начинается с (...) S.startswith(префикс [, начало [, конец]]) -> bool

Return True if S starts with the specified prefix, False otherwise.
With optional start, test S beginning at that position.
With optional end, stop comparing S at that position.
prefix can also be a tuple of strings to try.
Другие вопросы по тегам