Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2014 23:13:22

stasvoron
Зарегистрирован: 2014-07-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

телефонный справочник

Решил воспользоваться методом strip для удаление не нужных пробелов и тому подобных атрибутов, и вродь все просмотрел, все прочитал, но по факту нашел только работу со списком, а мне нужно удалить проблемы в моем .csv файле.
Хотелось бы услышать мнения специалистов.

Офлайн

#2 Окт. 9, 2014 02:07:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

телефонный справочник

Если линукс есть:

sed -i~ 's/  *$//' file.csv

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

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



Офлайн

#3 Окт. 9, 2014 13:22:55

stasvoron
Зарегистрирован: 2014-07-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

телефонный справочник


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

Отредактировано stasvoron (Окт. 9, 2014 15:40:06)

Офлайн

#4 Окт. 10, 2014 15:52:40

stasvoron
Зарегистрирован: 2014-07-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

телефонный справочник

сделал вот так, вродь работает, хотя я так и не понял для чего нужен 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()

Офлайн

#5 Окт. 10, 2014 22:05:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

телефонный справочник

stasvoron
phone = phone.strip()
Вот этого не должно быть. Данные хранятся в виде csv, следовательно, они уже должны быть правильно подготовлены.



Офлайн

#6 Окт. 11, 2014 09:03:42

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

телефонный справочник

Я думаю что 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
 кличка : Рыбак



Отредактировано doza_and (Окт. 11, 2014 09:17:36)

Офлайн

#7 Окт. 11, 2014 09:46:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

телефонный справочник

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

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

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



Прикреплённый файлы:
attachment python_org.png (1012,7 KБ)

Офлайн

#8 Окт. 11, 2014 11:02:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

телефонный справочник

Замечательная картинка. Сам считаю что многие GUI можно заменить возможностями текстового редактора. Если не сложно скинте ссылочку на документацию как делать такую красоту.

А по поводу csv vs yaml это тоже что NoSQL vs SQL. Иногда нужно одно а иногда другое. Я просто высказал мнение что возможен другой подход к построению телефонного справочника



Офлайн

#9 Окт. 11, 2014 23:05:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

телефонный справочник

doza_and
Если не сложно скинте ссылочку
http://orgmode.org/
Там можно не только делать списки, но и таблицы, в которых проводить вычисления, как в Excel'е. Причём всё не только текстовое, но может быть экспортировано в том числе и в html со всеми css.

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

Поставил его в том числе и под виндой - прекрасно вписался.



Отредактировано py.user.next (Окт. 11, 2014 23:09:49)

Офлайн

#10 Окт. 12, 2014 17:39:20

stasvoron
Зарегистрирован: 2014-07-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

телефонный справочник

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version