Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2011 18:19:30

AleXvWaN
От:
Зарегистрирован: 2011-02-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

Люди добрые, подскажите, на работе дали задание, а я не знаю как сделать на python.
Суть задания: есть 2 файла: маленький и большой. Большой имеет 100,000 значений с разделителем, в маленьком есть те же значения, но разделить другой.
Нужно
Дали подсказку: использовать хеш массивы, загнать первый файл маленький в хеш массив, потом читать каждую строчку и проверять нет ли этого значения в хеш массиве. Что на счет разделителей: когда ты считываешь значение из файла то сразу можно сплитать нужное. Выжал с мэнеджера все до капли, все подсказки. Добрые люди, помогите! В долгу не останусь!
Пример 1 файла:

domain0.com:email1@domain0.com
domain1.com:email2@domain1.com
.....
Пример 2 файла:
domain0.com,email1@domain0.com,test,tes2
domain1.com,email2@domain1.com,test2,tset3
....



Офлайн

#2 Фев. 28, 2011 18:30:55

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

если не известно в каком файле какой разделитель .
То достаточно прочитать первою строчку из файла и проверить какой разделитель используется
А дальше уже применять нужный разделитель.



Отредактировано (Фев. 28, 2011 18:31:12)

Офлайн

#3 Фев. 28, 2011 18:33:10

AleXvWaN
От:
Зарегистрирован: 2011-02-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

Дело в том, что я вообще новичок в этом деле и хотел бы поросить работающий код. А в плане разделителя, то его человек может задать в виде параметра.



Отредактировано (Фев. 28, 2011 18:33:28)

Офлайн

#4 Фев. 28, 2011 18:48:32

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

я не совсем понимая что нужно сделать. Но если нужно проверять каждую сроку на разделитель и делать split
то можно так.
Может кто умный придет и вам ответит я и сам новичок

filePuth = open(r'test_razd.txt')
for i in filePuth:
if ':' in i:
i = i.split(':')
print i
elif ',' in i:
i = i.split(',')
print i



Офлайн

#5 Фев. 28, 2011 18:50:18

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Хеш массивы

Описание файлов вижу, подсказку вижу, сделать то что нужно?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Фев. 28, 2011 19:19:44

AleXvWaN
От:
Зарегистрирован: 2011-02-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

PooH
Описание файлов вижу, подсказку вижу, сделать то что нужно?
Нужно во время чтения болльшого файла походу проверять наличие каждой строки в маленьком файле.



Офлайн

#7 Фев. 28, 2011 19:21:45

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Хеш массивы

Обожаю любителей халявы!



Офлайн

#8 Фев. 28, 2011 19:27:27

AleXvWaN
От:
Зарегистрирован: 2011-02-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

Андрей Светлов
Обожаю любителей халявы!
Люди, простите, просто по работе задали… Я на баше могу Вам практически что угодно написать!



Офлайн

#9 Март 1, 2011 01:02:15

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Хеш массивы

Ну напишите на баше. А мы хоть поймем чего нужно.



Офлайн

#10 Март 1, 2011 15:45:44

AleXvWaN
От:
Зарегистрирован: 2011-02-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеш массивы

Я попробую изобразить..
1файл = путь к 1ому файлу (полный список +разделитель между значениями “:”)
2файл = путь к 2ому файлу (не полный + разделитель между значениями “,”)
читаем 2 файл -> Берем 1строку с 2файл -> Ищем в 1файл -> Находим, запомнаем номер строки в 1файл -> Берем 2строку с 2файл -> Ищем в 1файл, начиная со строки, которую запомнили -> и так далее…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version