Создать переменные из текстового файла в Python - PullRequest
0 голосов
/ 16 мая 2019

Это связано с этим вопросом здесь Я использовал первый ответ, я попытался изменить код, но, похоже, он не работал, так как в этом примере в переменных было "[]"

У меня есть текстовый файл здесь:

room1North = CP
room1East = CP
room1South = OP
room1West = OP
room2North = OP
room2East = CP
room2South = EP
room2West = OP

Я бы хотел, чтобы Python создавал переменные со значениями в текстовом файле, чтобы переменная "room1North = CP" в Python

У меня естьпока следующий код


with open("maze files.txt", "r") as f:
    data = f.readlines()


room1North, room1East, room1South, room1West, room2North, room2Eeast, room2South, room2West  = [d.split('=')[1].split('\n')[0] for d in data]

Я получаю следующую ошибку:

IndexError: list index out of range

Ответы [ 3 ]

3 голосов
/ 16 мая 2019

Вы на самом деле не хотите отдельных переменных; Вы хотите один dict, чьи ключи читаются из файла.

with open("maze files.txt", "r") as f:
    data = {k:v for k, v in [line.strip().replace(' ', '').split("=") for line in f]}

# data["room1North"] == "CP"
# data["room1East"] == "CP"
# data["room1South"] == "OP"
# etc
0 голосов
/ 16 мая 2019

Измените свой код как показано ниже

with open("maze files.txt", "r") as f:
    data = f.readlines()

room1North, room1East, room1South, room1West, room2North, room2Eeast, room2South, room2West  = [d.split('=')[1].split('\n')[0] for d in ''.join(data).split('\n')]
0 голосов
/ 16 мая 2019

Думаю, вам больше повезет, если вы будете использовать словарь, а не полагаться на чистые переменные.

with open("maze files.txt", "r") as f:
    data = f.readlines()

rooms = {}
for i in data:
    currentRoom = i.replace(' ', '').strip().split('=')
    rooms[currentRoom[0]] = currentRoom[1]

То, что вам останется, это словарь, подобный следующему

print(rooms)
#{'room1North ': ' CP', 'room1East ': ' CP', 'room1South ': ' OP', 'room1West ': ' OP', 'room2North ': ' OP', 'room2East ': ' CP', 'room2South ': ' EP', 'room2 West ': ' OP'}

Вы можете сослаться на каждую комнату и ее значение по rooms["room1North"]

...