Это мой сценарий.Сравнение строк Python не работает должным образом
import MySQLdb import feedparser import string
def checkunique(t):
#t1 = ''.join(filter(lambda c: c in string.printable, t))
cur.execute("SELECT title from linkstwo")
titles = cur.fetchall()
for k in titles:
#k1 = ''.join(filter(lambda c: c in string.printable, k))
print "'%s'" % k
if t == k:
return False
return True
db = MySQLdb.connect ("localhost","root",password,"torrents") print "DB connection successful" cur = db.cursor()
url = "https://extratorrent.cc/rss.xml?type=popular&cid=4"
feed = feedparser.parse(url)
print "Parsing successful"
for post in feed.entries:
t = post.title
m = post.magneturi
#print "'%s'" % t
if checkunique(t):
cur.execute("INSERT INTO linkstwo (title, maglink) VALUES ('%s', '%s')" % \
(t, m))
db.commit()
print "Script ended"
Он анализирует канал RSS и добавляет новые записи в базу данных.
Моя проблема заключается в том, что функция checkunique
всегда возвращает true, и я продолжаю получать повторяющиеся записи. Я пробовал некоторые из решений для удаления любых непечатаемых персонажей, которые могли бы найти свой путь, но до сих пор не повезло.
BTW, это очень неэффективный способ проверить уникальность. Вы выбираете все заголовки снова и снова ... Просто поместите уникальное ограничение в таблицу базы данных и извлеките повторяющиеся ошибки при их запуске. – trincot
Разве вы не используете k [0] в сравнении? Ваша переменная, называемая заголовками, должна быть кортежем кортежей. –
Это тестовый скрипт для реального сценария, который я надеюсь построить. Очень важно сравнивать названия таким образом, так как я буду добавлять новые заголовки в отдельную таблицу (загрузить базу данных). Данные из этой таблицы будут использованы для загрузки связанных торрентов в отдельный скрипт. –