2015-06-12 3 views
-3

Учитывая текстовый файл, как такЧтение неотформатированного пара имени/значение из файла, форматирование, и напечатать его в Python 2 словаря

# Name_value_pair.txt 
name1 = value1 
name2 = value2 
name3 = "some value3" 
name4=value4 
name5= 
name6 

Можно ли прочитать этот файл, формат его в словарь и распечатать его с помощью python?

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

Редактировать: Кажется, что модуль ConfigParser лучше подходит для работы, которую я пытался выполнить.

+2

Что будет выглядеть словарь для вашего текстового файла? name6 даже не имеет знака равенства, так что должно быть значение? – Kevin

+0

словарь должен брать только «имена» в качестве ключей и «значения» в качестве значений. name6 будет проигнорирован, потому что у него нет an =, но name5 будет принят с его значением, равным null. – Googlesomething

+0

разделите линию на равную и оттуда создайте два списка, затем запишите списки в dict и вы прямо. –

ответ

1

Это будет игнорировать все строки без «=», то из остальных линий, удалите все кавычки и пробелы на внешней стороне каждого ключа и значения, а затем положить его в Словаре:

data = {} 

with open('in.txt', 'r') as fh: 
    for line in fh: 
     if '=' not in line: 
      continue 
     line = line.replace('"', '') 
     data[(line.split('='))[0].strip()] = (line.split('='))[1].strip() 

for k, v in data.items(): 
    print("{}: {}".format(k, v)) 

Выходной :

name1: value1 
name2: value2 
name3: some value3 
name4: value4 
name5: 
+0

Это очень полезно! Спасибо, я довольно новичок в python (начался на прошлой неделе) и не был уверен, с чего начать с этого. – Googlesomething

+0

Добро пожаловать. Если код работает хорошо для вас, пожалуйста, отметьте ответ как правильный. – stevieb

+0

Единственная проблема заключается в том, что если ключ не имеет =, его следует игнорировать, но я должен быть в состоянии сделать это сейчас. – Googlesomething

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