Python. Как редактировать данные в текстовой базе данных? - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть небольшой текстовый файл базы данных db.txt:

(peter)
    name = peter
    surname = asd
    year = 23
(tom)
    name = tom
    surname = zaq
    year = 22
    hobby = sport
(paul)
    name = paul
    surname = zxc
    hobby = music
    job = teacher

Как получить весь раздел данных, например, от Тома? Я хочу получить в переменной:

(tom)
    name = tom
    surname = zaq
    year = 22
    hobby = sport

Тогда я хочу изменить данные:

replace("year = 22", "year = 23")

и получите:

(tom)
    name = tom
    surname = zaq
    year = 23
    hobby = sport

Теперь добавьте (работа) и удалите (фамилия) данные:

(tom)
    name = tom
    year = 23
    hobby = sport
    job = taxi driver

И, наконец, переписать этот измененный раздел в старый файл db.txt:

(peter)
    name = peter
    surname = asd
    year = 23
(tom)
    name = tom
    year = 23
    hobby = sport
    job = taxi driver
(paul)
    name = paul
    surname = zxc
    hobby = music
    job = teacher

Какие-либо решения или советы, как это сделать? Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Использование PyYAML в соответствии с предложением @aitchnyu и внесение небольших изменений в исходный формат упрощает задачу:

import yaml

text = """
peter:
    name: peter
    surname: asd
    year: 23
tom:
    name: tom
    surname: zaq
    year: 22
    hobby: sport
paul:
    name: paul
    surname: zxc
    hobby: music
    job: teacher
"""

persons = yaml.load(text)
persons["tom"]["year"] = persons["tom"]["year"]*4   # Tom is older now
print yaml.dump(persons, default_flow_style=False)

Результат:

paul:
  hobby: music
  job: teacher
  name: paul
  surname: zxc
peter:
  name: peter
  surname: asd
  year: 23
tom:
  hobby: sport
  name: tom
  surname: zaq
  year: 88

Конечно, вы должны прочитать «текст» из вашего файла (db.txt) и написать его после завершения

0 голосов
/ 25 ноября 2011

Добавление к комментарию Себастьяна: используйте в памяти БД SQLite.SQLite уже встроен в Python, поэтому для его настройки требуется всего несколько строк.


Кроме того, если этот формат не может быть изменен, рассмотрим YAML для текста.Python может легко переводить в / из объектов YAML и Python (объект, состоящий из слов, списков, строк, вещественных чисел и т. Д.) За один шаг.Поэтому я предлагаю YAML -> объект Python -> БД SQLite и обратно.

...