2017-01-04 4 views
0

Я все еще новичок в работе с файлами ввода-вывода в python, поэтому у меня возникли проблемы с поиском, как искать определенную переменную в файле.Итерация файлов и поиск переменных

Это файл я открываю (типа .TXT):

grelha = [['O', 'H', 'L', 'E', 'M', 'R', 'R', 'V', 'U'], 

      ['B', 'B', 'R', 'A', 'N', 'C', 'O', 'Z', 'A'], 

      ['S', 'R', 'A', 'M', 'S', 'U', 'P', 'A', 'O'], 

      ['A', 'A', 'B', 'A', 'P', 'O', 'T', 'Z', 'Z'], 

      ['L', 'N', 'Z', 'R', 'O', 'E', 'R', 'N', 'U'], 

      ['I', 'U', 'I', 'E', 'P', 'D', 'O', 'I', 'I'], 

      ['L', 'O', 'L', 'L', 'O', 'R', 'A', 'C', 'A'], 

      ['I', 'T', 'M', 'O', 'T', 'E', 'R', 'P', 'P'], 

      ['L', 'I', 'E', 'A', 'Z', 'V', 'Y', 'U', 'U']] 
palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas'] 

И это код, который я получил:

def file(): 
    game_file = open(str(input("What is the name of the file?")), "r+") 
    for i in game_file: 
     if i == 'grelha':#"I've tried without it being a string as well" 
      print (i)  

Насколько я мог узнать там ISN 't любой способ помочь мне сделать это, и я также не совсем понимаю, как работает итерация в этом случае.

Если бы кто-нибудь мог помочь мне решить эту проблему и объяснить итерацию, это было бы здорово!

+1

Можете ли вы показать точное содержимое файла, который вы открываете? Кажется, вы ожидаете, что файл будет разобран как python. –

+0

Что значит, что вы ищете эту переменную в файле – Natecat

+1

Вам нужно _serialize_ свою переменную в вашем файле. Сохранение переменной в качестве обычного текста - не выход. Я предлагаю ознакомиться с модулем ['pickle'] (https://docs.python.org/3/library/pickle.html). –

ответ

0

по умолчанию питон прочитать файл построчно, так что ваш if i == 'grelha' не получит ничего.

Если вы хотите, чтобы найти строки начинаются с palavras, вы можете использовать startwith() метод:

In [3]: for line in file: 
    ...:  if line.startswith('palavras'): 
    ...:   print line 
    ...:   
palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas'] 

Для файла итерация линии работает по линии; Для str, итерация работает char char;

Как правило, python обрабатывает файл как строку, поэтому вы не можете писать код python в файле, строка palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas'] - это строка, а не код. Вам все равно нужно их разобрать.

+0

Спасибо! Это сработало хорошо! :) –

1

Что вы делаете, кажется, наивно полагают, что только потому, что содержимое файла является действительным python, его открытие с помощью python будет анализировать его как python. Это абсолютно не так. Вам нужно выбрать формат для хранения ваших данных, чтобы его можно было правильно интерпретировать, когда вам нужно его прочитать.

Например, вы можете обнаружить, что JSON является идеальным способом хранения таких структурированных данных:

{"grelha": [["O", "H", "L", "E", "M", "R", "R", "V", "U"], ["B", "B", "R", "A", "N", "C", "O", "Z", "A"], ["S", "R", "A", "M", "S", "U", "P", "A", "O"], ["A", "A", "B", "A", "P", "O", "T", "Z", "Z"], ["L", "N", "Z", "R", "O", "E", "R", "N", "U"], ["I", "U", "I", "E", "P", "D", "O", "I", "I"], ["L", "O", "L", "L", "O", "R", "A", "C", "A"], ["I", "T", "M", "O", "T", "E", "R", "P", "P"], ["L", "I", "E", "A", "Z", "V", "Y", "U", "U"]], "palavras": ["branco", "preto", "azul", "verde", "rosa", "amarelo", "vermelho", "cinza", "lilas"]} 

Тогда вы можете прочитать в вашей программе с помощью встроенного модуля JSON:

import json 

with open('f.json') as f: 
    data = json.loads(f.read()) 
print data['grelha'] 
+0

Я пробовал это, но, похоже, он не распознает модуль json когда это так, я пробовал несколько разных способов, пытаясь туда добраться, но он, похоже, не работал. –

+0

Код, который я вложил, работает как есть. По мере того, как ваши данные становятся более сложными, вам будет сложно создавать собственную систему синтаксического анализа, как это предлагает ответ @ scriptboy. Поэтому держите 'json' в виду как мощную гибкую модель для описания структурированных данных, внешних по отношению к вашему приложению. –

Смежные вопросы