我有一個推文列表,我必須選擇帶有「銷售」,「折扣」或「優惠」等條款的推文。此外,我還需要通過識別諸如「%」,「Rs」,「$」之類的內容來找到推廣特定交易(如折扣)的推文。我對正則表達式完全不瞭解,文檔也沒有讓我知道任何地方。這是我的代碼。這是相當糟糕的,但請原諒那個Python:某些條款的匹配字符串
import pymongo
import re
import datetime
client = pymongo.MongoClient()
db = client .PWSocial
fourteen_days_ago = datetime.datetime.utcnow() - datetime.timedelta(days=14)
id_list = [57947109, 183093247, 89443197, 431336956]
ar1 = [" deal "," deals ", " offer "," offers " "discount", "promotion", " sale ", " inr", " rs", "%", "inr ", "rs ", " rs."]
def func(ac_id):
mylist = []
newlist = []
tweets = list(db.tweets.find({'user_id' : ac_id, 'created_at': { '$gte': fourteen_days_ago }}))
for item in tweets:
data = item.get('text')
data = data.lower()
data = data.split()
flag = 0
if set(ar1).intersection(data):
flag = 1
abc = []
for x in ar1:
for y in data:
if re.search(x,y):
abc.append(x)
flag = 1
break
if flag == 1:
mylist.append(item.get('id'))
newlist.append(abc)
print mylist
print newlist
for i in id_list:
func(i)
此代碼soen't給我任何正確的結果,並且是一個菜鳥到正則表達式,我想不出什麼不妥的地方。任何人都可以提出一個更好的方式來做這份工作嗎任何幫助表示讚賞。
我正在學習正則表達式,但我需要一個短期解決方案,直到我可以自己解決將來的這些問題。說實話,我發現我完全是正規表達的褲子,並且不能很快地學習它們。 –
試試我的例子和實驗。我認爲它會解決你的問題,你不需要任何'split()','lower()'或嵌套'for'。另外,如果你給了我關於這個「inr」東西的更多信息,我可以爲這種情況提供更好的解決方案。 – Tupteq
我是這麼做的。我意識到split()不是必需的。 INR代表'Indian National Rupee'。 –