Найти - Пользователи
Полная версия: телефонный справочник
Начало » Python для новичков » телефонный справочник
1 2 3
stasvoron
Решил воспользоваться методом strip для удаление не нужных пробелов и тому подобных атрибутов, и вродь все просмотрел, все прочитал, но по факту нашел только работу со списком, а мне нужно удалить проблемы в моем .csv файле.
Хотелось бы услышать мнения специалистов.
py.user.next
Если линукс есть:
sed -i~ 's/  *$//' file.csv

Если нет, лучше поставить. :)

Вообще, csv - текстовый формат, так что можешь просто построчно его прочитать, а потом построчно его записать в другой файл, делая для каждой строки .rstrip().
stasvoron

У меня линукс, сегодня опробую выше показанный код и отпишу результат
stasvoron
сделал вот так, вродь работает, хотя я так и не понял для чего нужен return

import csv
a = raw_input('Vvedite nomer ')
def bible():
    reader = csv.reader(open("data.csv", "rb",), delimiter=';')
    name = None
    for first_name, last_name, phone in reader:
        phone = phone.strip()
        if a == phone:
            name = first_name, last_name
    if name:
        print '{} {}' .format(*name)
    else:
        print 'Phone not found'
    return None
    return name
bible()
py.user.next
stasvoron
phone = phone.strip()
Вот этого не должно быть. Данные хранятся в виде csv, следовательно, они уже должны быть правильно подготовлены.
doza_and
Я думаю что yaml или json подходят для хранения телефонного справочника гораздо лучше чем csv.
  • Не будет проблем с удалением пробелов или табуляций и т.п.(предлагаемые форматы более строгие и у пользователя гораздо меньше возможности испортить данные).
  • При большом количестве полей меньше возможности запутаться поскольку можно использовать запись типа ключ - значение.
  • Вы получаете “NoSQL” решение при котором не ограничены в сложности записей с одной стороны. С другой стороны не требуется перелопачивать все записи при изменении структуры отдельных записей.
Поэтому поддержание такого справочника в порядке гораздо проще чем обычной таблицы.

Из минусов - повышенная многословонсть.

Я сам давным давно контакты, списки задач, списки публикаций и т.п. храню в yaml файлах добавленных в систему контроля версий (возможный вариант хранение в облаке но я предпочитаю более детальный контроль и возможность просмотра изменений). Дописываю утилиты для работы с ним по мере необходимости.

Пример для телефонного справочника.
--- 
 name  : Иванов Иван Иванович
 dr    : 1988-05-25
 tel   : 849532222300
 email : sh0.romash@mail.ru
 addr  : 165
 info  : Познакомились на пъянке у деда мороза
--- 
 name  : Щукин Налим Рыбняевич
 tel   : 89104500000р 89104500001д 
 email : abcdef@mephi.ru
 dr    :  2014-10-11 09:57:01.890000
 кличка : Рыбак

py.user.next
doza_and
Не будет проблем с удалением пробелов или табуляций и т.п.(предлагаемые форматы более строгие и у пользователя гораздо меньше возможности испортить данные).

csv - не менее строгий формат. Просто там, если есть пробелы в поле, значит они нужны. Когда он делал файл, он не позаботился о том, чтобы поля хранили только то, что нужно.

doza_and
Я сам давным давно контакты, списки задач, списки публикаций и т.п. храню в yaml файлах добавленных в систему контроля версий
Класс, но Emacs-то лучше :) Там вообще можно живые текстовые файлы делать.
Посмотришь картинку.
doza_and
Замечательная картинка. Сам считаю что многие GUI можно заменить возможностями текстового редактора. Если не сложно скинте ссылочку на документацию как делать такую красоту.

А по поводу csv vs yaml это тоже что NoSQL vs SQL. Иногда нужно одно а иногда другое. Я просто высказал мнение что возможен другой подход к построению телефонного справочника
py.user.next
doza_and
Если не сложно скинте ссылочку
http://orgmode.org/
Там можно не только делать списки, но и таблицы, в которых проводить вычисления, как в Excel'е. Причём всё не только текстовое, но может быть экспортировано в том числе и в html со всеми css.

Кстати, строка
# -*- coding: utf-8 -*-
тоже из Emacs пришла.
перевод
локальные переменные

Поставил его в том числе и под виндой - прекрасно вписался.
stasvoron
люди у меня задание сделать все с csv, справочник можно обозвать как угодно, просто нужно все сделать, что бы и пробелы были, мало ли кто csv файл писал, и что бы их убрать через стрим, опять таки работает так как я написал почему это не правилно?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB