У меня есть приложение Python
, которое вставляет словарные записи в MongoDB
(через PyMongo
).Python - Присвоить тип значению в словаре
Записи словаря считываются из строк файла CSV
(его фактически разделение на вкладке, но такое же различие).
Чтобы прочитать файл CSV
и вставить каждую строку в MongoDB
, я использую код:
with open(input_file, 'r') as f_h:
reader = csv.DictReader(f_h, delimiter='\t')
records = []
for record in reader:
records.append(record)
if len(records) % 100 == 0:
db.add_record(table_name, records) #MongoDB helper method
records = []
Это работает очень хорошо, за исключением того, что ВСЕ мои значения имеют тип string
, когда на самом деле, У меня есть int
и float
значения в записях. I think У Python есть возможность определить тип, но я не уверен, как реализовать это в приведенном выше коде. Кто-нибудь об этом знает?
UPDATE:
Оба sihrc
и Joran
«ы ответ указал мне правильное направление. Тем не менее, я хотел обновить с полной рабочей реализацией. Мой вопрос включал, как я могу изменить состав каждого элемента словаря, прежде чем отправить его в MongoDB. Для этого мне пришлось поместить свой код в цикл по каждой пары key/value
в словаре.
for key, value in dictionary.iteritems():
try:
dictionary[key] = int(value)
except: pass
try:
dictionary[key] = float(value)
except: pass
return dictionary
Работает как очарование. Хотел бы я принять два ответа!
Вы пытаетесь прочитать тип вашего входного файла? Вы можете попробовать кастинг в try catch. – sihrc
Полагаю, мне может понадобиться, но об этом я и спрашиваю. – Brett