Найти - Пользователи
Полная версия: Обработка текстового файла
Начало » Python для новичков » Обработка текстового файла
1
TimeISA
Есть большой текстовый файл от буха, нужно совершить поиск в нем по счету и скопировать из этой строки № документа сумма документа дата документа в другой файл, как это можно реализовать?
py.user.next
приведи пример содержимого файла
TimeISA
 Банк "XXX" (ЗАО)

Выписка лицевого счета 66666666666666666666
за период с 01.11.2011 по 30.11.2011
Валюта счета 810 RUR
Наменование ООО "MMA"
Сальдо на начало : 1,545,050.49
-----------------------------------------------------------------------------------------
Дата N Счет Вид Обороты счета
операции документа корреспондент операции Дебет Кредит
-----------------------------------------------------------------------------------------
01.11.2011 2509K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2510K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2512K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2513K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2514K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2515K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2516K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
01.11.2011 2517K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
11.11.2011 309 22222222222222222222 01 254,785.24
перечисление денежных средств по заявлению физических лиц согласно реестру
AB_03_20111111 от 11.11.2011 г., без НДС
ИТОГО оборотов за 11.11.2011 256,239.37 254,785.24
-----------------------------------------------------------------------------------------
14.11.2011 2605K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 2606K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 2607K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 2608K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 2595K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 2609K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
14.11.2011 301 22222222222222222222 01 471,234.08
перечисление денежных средств по заявлению физических лиц согласно реестру
AB_03_20111114 от 14.11.2011 г., без НДС
ИТОГО оборотов за 14.11.2011 475,988.30 471,234.08
-----------------------------------------------------------------------------------------
15.11.2011 2610K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
15.11.2011 2611K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
15.11.2011 2613K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
15.11.2011 2614K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
15.11.2011 2615K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
15.11.2011 2615 66666666666666666666 01 10,000.00
Зачислить денежные средства по договору купли-продажи векселя 101822HkZbD11
от 12.11.2011 Без НДС. Эл.платеж FAKTURA.RU
15.11.2011 2613 66666666666666666666 01 20,000.00
Зачислить денежные средства по договору купли-продажи векселя 101818HkZbD11
от 11.11.2011 Без НДС. Эл.платеж FAKTURA.RU
15.11.2011 2611 66666666666666666666 01 40,000.00
Зачислить денежные средства по договору купли-продажи векселя 101815HkZbD11
от 10.11.2011 Без НДС. Эл.платеж FAKTURA.RU
15.11.2011 2614 66666666666666666666 01 40,000.00
Зачислить денежные средства по договору купли-продажи векселя 101819HkZbD11
от 11.11.2011 Без НДС. Эл.платеж FAKTURA.RU
15.11.2011 2610 66666666666666666666 01 50,000.00
Зачислить денежные средства по договору купли-продажи векселя 101812HkZbD11
от 10.11.2011 Без НДС. Эл.платеж FAKTURA.RU
15.11.2011 460 22222222222222222222 02 59,041.07
списание денежных средств в безакцептном порядке по кредитам и займам
физических лиц на основании п.3.4.1 Соглашений о поручительстве №11 от
14.07.2010 согласно реестру от 15.11.2011 без НДС
15.11.2011 301 22222222222222222222 01 211,909.14
перечисление денежных средств по заявлению физических лиц согласно реестру
AB_03_20111115 от 15.11.2011 г., без НДС
ИТОГО оборотов за 15.11.2011 219,141.07 211,909.14
-----------------------------------------------------------------------------------------
16.11.2011 2616K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
16.11.2011 2617K 11111111111111111111 17 20.00
Комиссия за расчётное обслуживание по системе Интернет-клиент согласно
Тарифов. Без НДС
И вот везде где встречаеться 11111111111111111111
нужно отдельно скопировать в отдельное место номер документа сумму документа и дату документа
plastun
Так?
import sys

def main(args):
if len(args) < 2:
print 'USAGE: %s in_file' % args[0]
return 1

in_file = args[1]
out_file = open('out.txt', 'w')
for line in open(in_file):
if '11111111111111111111' in line:
out_file.write(' '.join(line.split()) + '\n')
out_file.close()


if __name__ == "__main__":
sys.exit(main(sys.argv))
o7412369815963
можно регексом выкусить строку:
print re.findall(r'^.+11111111111111111111.+$', open(in_file,'rb').read(), re.MULTILINE)
py.user.next
#!/usr/bin/env python3

number='11111111111111111111'

with open('file.txt', encoding='utf-8') as f:
for line in f:
if number in line:
parts = line.split()
if len(parts) == 5:
print(';'.join(parts))
[guest@localhost tests]$ ./t.py
01.11.2011;2509K;11111111111111111111;17;20.00
01.11.2011;2510K;11111111111111111111;17;20.00
01.11.2011;2512K;11111111111111111111;17;20.00
01.11.2011;2513K;11111111111111111111;17;20.00
01.11.2011;2514K;11111111111111111111;17;20.00
01.11.2011;2515K;11111111111111111111;17;20.00
01.11.2011;2516K;11111111111111111111;17;20.00
01.11.2011;2517K;11111111111111111111;17;20.00
14.11.2011;2605K;11111111111111111111;17;20.00
14.11.2011;2606K;11111111111111111111;17;20.00
14.11.2011;2607K;11111111111111111111;17;20.00
14.11.2011;2608K;11111111111111111111;17;20.00
14.11.2011;2595K;11111111111111111111;17;20.00
14.11.2011;2609K;11111111111111111111;17;20.00
15.11.2011;2610K;11111111111111111111;17;20.00
15.11.2011;2611K;11111111111111111111;17;20.00
15.11.2011;2613K;11111111111111111111;17;20.00
15.11.2011;2614K;11111111111111111111;17;20.00
15.11.2011;2615K;11111111111111111111;17;20.00
16.11.2011;2616K;11111111111111111111;17;20.00
16.11.2011;2617K;11111111111111111111;17;20.00
[guest@localhost tests]$
TimeISA
всем спасибо, все работает
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