@whorsash

Как правильно парсить CSV?

Всем привет. Я пишу бота, который бы помогал пользователю получать необходимую информацию по заданному номеру.

Вот у меня есть файл формата CSV.
Жаль, что не могу вставить файл.

Ссылка на файл


Первичный ключ является столбец number.
То есть пользователь будет вводить только номер.
Благодаря этому номеру он получает сообщения name, descript, site а также фотографию, которая загрузится по ссылке.

Это можно сделать, чтобы не вбивать подобный код:
import telebot
from telebot import types

token = 'Здеся мой токен'
bot= telebot.TeleBot(token)

@bot.message_handler(commands=['start'])
def start(m):
  msg=bot.send_message(m.chat.id,
    '''Вас приветствует whorsash''')
  logotip = open('C:\\Users\\user\\logo.png', 'rb')
  bot.send_photo(m.chat.id, logotip)
  messg=bot.send_message(m.chat.id,
    '''Для поиска информации введите номер''')
  bot.register_next_step_handler(messg, name)


def name(t):
   #101
   if t.text == '101':
    bot.send_message(t.chat.id,
     '''Тачка''')
    n101 = open('http://arshin48.ru/upload/iblock/717/sad.tachka-nv-1302.jpg', 'rb')
    bot.send_photo(t.chat.id, n101)
    bot.send_message(t.chat.id,
    '''Тачка садовая, элегантная''')
    bot.send_message(t.chat.id,
    '''http://arshin48.ru/catalog/27657/915202/''')

    #301
   elif t.text == '301':
    bot.send_message(t.chat.id,
     '''Бабки''')
    n301 = open('http://g4.nh.ee/images/pix/1000x654/yEP_eSREsiY/6cce0564d8f9c9b73f-72993621.jpg', 'rb')
    bot.send_photo(t.chat.id, n301)
    bot.send_message(t.chat.id,
    '''2 билета на концерт новых русских бабок''')
    bot.send_message(t.chat.id,
    '''http://mail.ru''')

   else:
    bot.send_message(t.chat.id,
    '''Упс... Такого номера у нас нет...
    повторите ввод''')

bot.polling(none_stop=True, interval=0)


Это вот так в лоб можно пойти, но у меня номеров свыше 1000, есть варианты?

Научите меня парсить и понять эту процедуру, а также с циклом объясните и научите.
Да, я гуглил, про парсинг не очень понял. Про цикл надо вчитываться.

Просто пытаюсь сделать так, чтобы бот не останавливался, а при повторном вводе выдавал информацию, а мне приходится вводить /start в телеграме, чтобы бот снова заработал. Это относится к циклу, я так понимаю.

И чтобы парсить, тоже надо использовать цикл.

Есть какое-нибудь решение?
  • Вопрос задан
  • 4179 просмотров
Пригласить эксперта
Ответы на вопрос 2
Парсить csv в питоне можно с помощью модуля csv(входит в стандартную библиотеку):
Документация:
https://docs.python.org/3/library/csv.html
Ответ написан
nikolay_karelin
@nikolay_karelin
Ведущий разработчик, пишу на Python, Tcl, Matlab
1000 строк - это совсем немного, я бы читал это в память при старте сервера, сохранял в словарь и потом выгребал по коду в запросе. По примеру в документации csv файл читается одноименным модулем в 3-5 строк.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы