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.