Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2015 13:22:17

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

4kpt_III
Ну и 400 строк - это не объем данных. А связи можно повторить
Для моего уровня программирования, который стремится к 0, это слишком объемная задача )) И об базах данных я что-то слышал и даже что-то делал, но опять же, чтобы все это связать в кучу - у меня займет слишком много времени)

В общем начал с поиска суммы платежа и решил потренироваться в простеньком txt файле (прикрепил)
И метод find что-то работает не так как я ожидал. По идее он должен возвращать индекс начала подстроки, но почему-то всегда пишет -1, хотя в итоге должен написать 2.(переменная c)
В чем ошибка?


f = open('1.txt', 'r')
g=0
c=0
d=0
b=0
r=0
n = f.readlines()
for line in n:
    g=g+1
for i in range(g):
    s=n[i]
    c=s.find('квартира')
    if s.find('квартира')>0:
        for j in range(len(n[i])):
            if n[i][j]=='a' and n[i][j+1]==',':
                d=j+2
        for d in range(len(n[i])):
            if n[i][d]==',':
                b=d-1
        r=n[i][d:b+1]
print (r)

Прикреплённый файлы:
attachment 1.txt (43 байта)

Офлайн

#2 Авг. 12, 2015 14:31:29

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

omon3

with open('1.txt') as f:
    for line in f:
        c = line.find('stroka')
        if c > 0:
            ....

Офлайн

#3 Авг. 14, 2015 00:17:26

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

В общем, как найти информацию в одном файле и как записать информацию этого ОДНОГО файла в excel я разобрался и сделал, НО, к сожалению, на самом важном, а именно обрабатывать и записывать данные из ВСЕХ файлов директории, мои знания в программировании иссякли.

Тоесть я представляю, что вначале я должен сделать выборку всех тестовых файлов ( с помощью os.listdir например) а потом нужно каждый файл открыть, обработать, записать в excel и закрыть. Но как именно поочередно открывать и закрывать эти текстовые файлы??

Офлайн

#4 Авг. 14, 2015 01:25:39

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

Немного подумав, я все же решил эту задачу но коряво:

dir=os.listdir('../платежки')#считывание всех файлов в директории
for ii in range (len(dir)):
    f = open(dir[ii], 'r')#функция записи в память файл
...
...
Тоесть чтобы метод listdir считывал только нужные текстовые файлы, я прописал путь к папке, где находятся только нужные текстовые файлы, НО сама программа находится в другой директории и там нету этих текстовых документов. Мне пришлось копировать текстовые файлы и в папку с программой
Тоесть в функции open задать путь к нужной папке?

Офлайн

#5 Авг. 14, 2015 02:15:37

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

python 3, Excel 2007 xlsx, TXT

>>> import os
>>> import itertools
>>> 
>>> def list_files(path):
...     # Здесь из директории выделяются только файлы
...     fulls = (os.path.join(path, i)
...              for i in os.listdir(path))
...     return filter(os.path.isfile, fulls)
... 
>>> def file_contents(path):
...     # Здесь преобразуешь имя файла в поток его строк
...     return ['file', 'contents'] # как бы открыл и вернул
... 
>>> def stream_data(seq):
...     # Здесь преобразуешь поток строк в поток выделенных данных
...     return ['stream', 'data'] # как бы выделил и вернул
... 
>>> def doc_write(doc, pos, data):
...     # Здесь записываешь в документ и позицию выделенные данные
...     print('Writing to', doc)
...     print('  to position', pos)
...     print('  start', data, 'end')
... 
>>> def dir_to_doc(path, doc):
...     # Здесь происходит преобразование содержимого директории
...     # в записанные в документе выделенные данные
...     positions = ((1, i) for i in itertools.count(1))
...     dsequence = (stream_data(file_contents(i)) for i in list_files(path))
...     for pos, dat in zip(positions, dsequence):
...         doc_write(doc, pos, dat)
... 
>>> dir_to_doc('/etc', 'file.xls')
Writing to file.xls
  to position (1, 1)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 2)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 3)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 4)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 5)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 6)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 7)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 8)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 9)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 10)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 11)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 12)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 13)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 14)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 15)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 16)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 17)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 18)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 19)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 20)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 21)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 22)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 23)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 24)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 25)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 26)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 27)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 28)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 29)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 30)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 31)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 32)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 33)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 34)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 35)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 36)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 37)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 38)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 39)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 40)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 41)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 42)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 43)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 44)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 45)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 46)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 47)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 48)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 49)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 50)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 51)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 52)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 53)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 54)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 55)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 56)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 57)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 58)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 59)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 60)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 61)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 62)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 63)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 64)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 65)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 66)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 67)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 68)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 69)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 70)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 71)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 72)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 73)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 74)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 75)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 76)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 77)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 78)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 79)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 80)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 81)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 82)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 83)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 84)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 85)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 86)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 87)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 88)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 89)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 90)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 91)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 92)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 93)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 94)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 95)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 96)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 97)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 98)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 99)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 100)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 101)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 102)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 103)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 104)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 105)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 106)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 107)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 108)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 109)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 110)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 111)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 112)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 113)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 114)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 115)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 116)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 117)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 118)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 119)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 120)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 121)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 122)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 123)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 124)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 125)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 126)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 127)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 128)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 129)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 130)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 131)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 132)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 133)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 134)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 135)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 136)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 137)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 138)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 139)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 140)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 141)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 142)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 143)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 144)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 145)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 146)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 147)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 148)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 149)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 150)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 151)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 152)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 153)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 154)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 155)
  start ['stream', 'data'] end
Writing to file.xls
  to position (1, 156)
  start ['stream', 'data'] end
>>>



Офлайн

#6 Авг. 14, 2015 15:50:05

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

py.user.next
Спасибо за совет. Буду разбираться, я пока в def не силен, и не совсем понимаю как он работает)

Офлайн

#7 Авг. 14, 2015 20:41:39

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

python 3, Excel 2007 xlsx, TXT

omon3
Спасибо за совет. Буду разбираться
Позволю себе повторить самый дельный совет в этой переписке. ВЫКИНТЕ эксел. Используйте БД. По не исключено что для начала вам хватит и Picke - модуля сериализации данных.

Много раз наблюдал такие проекты. 95% кончаются ничем. остальные 5% раньше или позже отказыаются от exel.

Вы сейчас и питон не знаете. А изучать работу с exel это большая дополнительная нагрузка к изучению языка.

Второй совет
Начните с четкой формулировки технического задания (без привязки к python exel и прочим промежуточным неважностям).
Если вы его тут изложите и приложите примеры входных файлов то думаю вам помогут, а саомое главное вы сами лучше осознаете что именно хотите сделать. (очень подозреваю что 400 строк exel сократятся до 50 питоновских)



Отредактировано doza_and (Авг. 14, 2015 20:43:10)

Офлайн

#8 Авг. 15, 2015 00:32:28

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, Excel 2007 xlsx, TXT

doza_and
…ВЫКИНТЕ эксел. Используйте БД…
Я не могу выкинуть эксель т.к. он не мой)) и не мне им пользоваться.


doza_and
Начните с четкой формулировки технического задания (без привязки к python exel и прочим промежуточным неважностям).Если вы его тут изложите и приложите примеры входных файлов то думаю вам помогут, а саомое главное вы сами лучше осознаете что именно хотите сделать
Если мне нужно было просто сделать, я бы написал тз и задал вопрос “как”, потом на него ответили бы в виде кода и я бы просто его использовал, ничего не поняв(ибо в 80% случаев весь код для меня выглядел бы заумным и непонятным) или очень долго разбирался в нем. В конце концов готовый код сбивает с толку и в итоге получается ты реализуешь не свои мысли, а чужие.

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

спасибо за советы)

P.S. я все же смог перезаписать из текстовых файлов в существующий ексель информацию - это жир, это дичь, но все же это работает)))

Отредактировано omon3 (Авг. 15, 2015 00:34:02)

Офлайн

#9 Авг. 15, 2015 02:26:03

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

python 3, Excel 2007 xlsx, TXT

doza_and
самый дельный совет в этой переписке. ВЫКИНТЕ эксел. Используйте БД.
doza_and
(очень подозреваю что 400 строк exel сократятся до 50 питоновских)
У них, походу, весь документооборот основан на экселе. Выкинуть эксель - значит, зацепить ещё 100500 документов. (Там ещё могут быть макросы, накопившиеся за 10 лет.)

doza_and
По не исключено что для начала вам хватит и Picke - модуля сериализации данных.
Pickle надо использовать, только когда с питоном дело имеешь.
К питону тоже нельзя привязываться, нужен промежуточный формат, подходящий по все языки и все системы.



Отредактировано py.user.next (Авг. 15, 2015 02:30:44)

Офлайн

#10 Авг. 15, 2015 08:06:27

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

python 3, Excel 2007 xlsx, TXT

omon3
В конце концов готовый код сбивает с толку и в итоге получается ты реализуешь не свои мысли, а чужие.
Не могу представить себе и никогда не встречал кодера, не аса а вообще любого человека создающего программы, который не умеет читать чужой код. Если готовый код сбивает вас с толку то вам вообще лучше программированием не заниматься, поскольку изучение языка программирования основано на чтении чужих кодов.

py.user.next
Pickle надо использовать, только когда с питоном дело имеешь.
Полностью согласен. Но это самый самый простой вариант. А по поводу всех возможных систем, так дай бог чтобы автор хоть питон освоил. Pickle довольно быстр. Намного Быстрее чем json и тем более yaml. По скорости с ним сравним если только msgpack…
py.user.next
У них, походу, весь документооборот основан на экселе
Ну так надо удачный инструмент выбирать. Тогда выкинуть на… Питон и использовать C#, Iron или еще лучше VBA. Зачем смешанного монстра городить?

С другой стороны не вижу проблем хранить данные в СУБД и скидывать результат в xlsx по мере необходимости. По мне так такую базу в самом деле лучше уж в виде набора текстовых файлов иметь чем в эксель пытаться ее запихнуть.
py.user.next
Выкинуть эксель - значит, зацепить ещё 100500 документов
Может и так. Именно поэтому я автора и просил задачу подробнее описать. А так это просто наши догадки.
Лично я и все мои знакомые если и используют exel то только для просмотра табличек (как gui). Поэтому мне трудно представить проблемы отказа от него как от средства проведения расчетов :) :)

И наиболее естественным режимом эксплуатации exel мне кажется формирование текстового файла с таблицей (из python или другого средства) с последующим импортом всей этой таблицы управляя exel через win32com. или .Net. Зачем надо пихать все это в отдельные ячейки?



Отредактировано doza_and (Авг. 15, 2015 08:22:33)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version