抱歉,如果之前有人問過這個問題,但我對此感到很頭疼,我已經在這個問題上搜索了幾個小時,試圖看看是否有類似的解決方案。
我有一個 url 串列,其中 '/' '/' 中的最后 6 個字符是數字,例如:www.test.com/nothere/432432/
我正在嘗試撰寫代碼,以便如果在字串中的位置與子字串匹配,它不會被添加到串列中。url 的“正在查看”的格式都是相同的,因此在示例中使用了正則運算式。
我已經嘗試了各種 if re.match if re.search 等,但我無法將任何東西放在一起似乎都行不通。
這是我最近的嘗試:
list = ['www.test.com/nothere/432432/', 'www.test.com/nothere/685985/', 'www.test.com/nothere/655985/', 'www.test.com/nothere/112113/']
regex = re.compile(r'(/\d{6}/)')
filtered = [i for i in list if not regex.match(i)]
print(filtered)
我對此的理解是,如果 regex.match(i) 沒有被觸發,那么該專案就會被添加。否則不要。但這顯然不是這種情況,它毫無顧忌地添加了它們:/
任何和所有的幫助都是appriciated。
謝謝!
編輯
我試過的另一個版本什么都不做:
regex = re.match(r'(/\d{6}/)', Adlink) in allAdLinks
if regex:
allAdLinks.remove(Adlink)
print(allAdLinks)
else:
print("try again")
continue
uj5u.com熱心網友回復:
IIUC,您想從串列中洗掉最后 6 位數字已在串列中的另一個 url 中看到的所有條目。您可以通過處理串列來做到這一點,僅當頁面的最后 6 個數字不在先前看到的數字集合中時才保留頁面(并在這種情況下將它們添加到集合中):
urls = [
'www.test.com/nothere/432432/',
'www.test.com/nothere/685985/',
'test.com/1604350/169408',
'www.test.com/nothere/655985/',
'www.test.com/nothere/112113/',
'test.com/1602436/169408',
'www.test.com/another/685985/'
]
pages = set()
result = []
for url in urls:
num = re.search(r'\d{6}/?$', url)
if num is not None and num.group() not in pages:
result.append(url)
pages.add(num.group())
print(result)
輸出:
[
'www.test.com/nothere/432432/',
'www.test.com/nothere/685985/',
'test.com/1604350/169408',
'www.test.com/nothere/655985/',
'www.test.com/nothere/112113/'
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505422.html