Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2018 05:29:03

irgit
Зарегистрирован: 2018-02-04
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

Первый пост и собственно сам вопрос в комментариях:

 import feedparser
import pymysql.cursors
import facebook
url = feedparser.parse('rss.xml)
connection = pymysql.connect()
#в базе сохранены новости и их ссылки. Проходим циклом
cur = connection.cursor()
cur.execute("SELECT rssfb.link FROM rssfb")
for row in cur:
    link1 = row.get('link')
#парсер rss, получаем список из rss
for e in url['entries']: #Вопрос1 в циуле можно делать построковую выборку из другого списка (массива или словаоря)?
    link2 = e.get('link','')
    if link1 == link2: #Вопрос 2 Как сравнить два списка полученные циклом for? Правльна ли консткрукция?
      #пропускаем
    else:
      #Если в базе такой новости нет, то отправляем в ФБ. Заранее спасибо!

Отредактировано irgit (Фев. 5, 2018 05:35:16)

Офлайн

#2 Фев. 7, 2018 18:56:19

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов



irgit
if link1 == link2: #Вопрос 2 Как сравнить два списка полученные циклом for? Правльна ли консткрукция?
нет, в link1 будет последнее значение
крутите 2 цикла или сохраните данные после первого цикла, но так делать не кошерно.

Отредактировано papuas (Фев. 7, 2018 19:30:52)

Офлайн

#3 Фев. 7, 2018 20:38:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

сделайте link1 b link2 множествами(set) и сделайте разность , на выходе получите линки которые есть в link1 но нету в link2

 link1 = set()
for row in cur:
    link1.append(row.get('link'))
....
# также делаем для link2
....
diff_links =  link1.difference( link2) #линки котороые есть в link1 но нету в link2
if  diff_links:#     если новое множество не пустое     
    for link in diff_links:
        #, отправляем в ФБ...



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 7, 2018 20:39:01)

Офлайн

#4 Фев. 19, 2018 18:26:47

irgit
Зарегистрирован: 2018-02-04
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

PEHDOM
сделайте link1 b link2 множествами(set) и сделайте разность , на выходе получите линки которые есть в link1 но нету в link2
спасибо большое, я счастлив)

Офлайн

#5 Фев. 21, 2018 18:02:23

irgit
Зарегистрирован: 2018-02-04
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

Ребята, опять затык (простите только учусь). Вот такая конструкция, которая должна через pymysql писать ссылки в таблицу mysql

 if  diff_links:
    for linkfb in diff_links: #ссылки
            with connection.cursor() as cursor: 
                ql = ("INSERT INTO `fburl`(`url`) VALUES" + '("'+ linkfb + '");') #вроде исполняется, но в таблицу не пишется. Почему?
                cursor.execute(ql)
Похоже синтаксис, но не могу увидеть явную проблему. Так же хотелось бы узнать ваше мнение о структуре конструкции. Хочется сразу учится с грамотных конструкций. Заранее спасибо.

Офлайн

#6 Фев. 22, 2018 07:01:56

irgit
Зарегистрирован: 2018-02-04
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

irgit
Ребята, опять затык (простите только учусь). Вот такая конструкция, которая должна через pymysql писать ссылки в таблицу mysql

разобрался в чем дело. Оказывается сам mysql воспринимал записи как дублирующие и не писал их в базу, а я воспринимал как ошибку. Все безупречно работает

 with connection.cursor() as cursor:
    cursor.executemany("INSERT INTO `fb`(`url`) VALUES (%s)", link )
    connection.commit()

Офлайн

#7 Фев. 24, 2018 16:47:13

irgit
Зарегистрирован: 2018-02-04
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение списков из двух циклов

Ура! Мой первый проект на https://github.com/tarbagan/rss_to_facebook
Спасибо всем)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version