2016-02-26 21 views
0

我試圖做一個非常簡單的程序,其中我有兩個csv文件,其中包含域名列表或博客帖子URL。我試圖導入第一個,並將價格的域和列列成一個我設法做的字典。使用csv閱讀器獲取網址並將它們放入列表

現在我想導入第二個csv文件,它只是一個博客帖子URL的單個列。

我第二個文件導入網址後,並打印出來,每個URL似乎被包裹在[]列表中,像這樣:

[「http://www.gardening-blog.com/post-1‘],[’http://www.foodie-blog.com/post-2」],[ 'http://www.someotherblog.com/post-1'] .... etc etc

這是用csv讀取器導入的東西嗎?

另外我還有一個問題,去除'http://'和'www'的最佳方法是什麼?從網址列表中?我有2種方法,我已經在下面使用map和join(註釋掉)了,但是他們不會工作,但我有一種感覺就是這樣做,但是列表問題。我已經完成了與字典,但我不能用列表替換。

感謝

import csv 

reader = csv.reader(open("domains_prices.csv", 'r')) 

reader2 = csv.reader(open('orders_list.csv', 'r')) 

domains_prices={} 

orders_list = list(reader2) #import all blog post urls into a list 


for domain, price in reader: 
    domain = domain.replace('http://', '').replace('www', '') 
    domains_prices[domain] = price 

#orders_list = ''.join(orders_list).replace('http://','').split() 

#map(str.strip, orders_list) 

print orders_list 

編輯

這裏就是伊夫改變,似乎現在的工作:

orders_list = [] 


for row in reader2: 
    orders_list.append(','.join(row)) 

orders_list = [s.replace('http://', '').replace('www.','') for s in orders_list] 
+0

好,我想我可能已經通過執行以下操作想通了:爲行reader2: \t orders_list.append(「」。連接(行)),似乎已經創建了一個列表,但我仍然不明白爲什麼這些方括號放在每個項目第一次我試圖做到這一點... –

回答

1

所以,基本上csv.reader讀取自定義的CSV文件,他的下一個()方法給出下一行,而在Python中,這一行表示爲列表,即使它是由單個字段組成。這就是爲什麼你收到的,而不是像list(reader2)隱含的閱讀與單一元素列表清單,大概要它明確:

orders_list = [row[0] for row in reader2] 

而當你要刪除的「http://」和「WWW」 URL可以做正確的建設中:

orders_list = [row[0].replace("http://", "").replace("www.", "") for row in reader2] 

但我會建議與HTTP的和www去除更聰明,因爲模式可能不是「http」或「https」開頭,我想你想從鏈接開始只刪除「www」。所以,你可以看看urllib2.urlparse模塊,並檢查網址(鏈接),如果它以「www」的開始:

url = url.replace("www.", "", 1) if url.startswith("www.") else url 

注:1只表示在url.replace("www.", "", 1)避免從內部清除「WWW」例如,如果您有這樣的內容:「www.facebook.com/best-www-address」。

而且是最後你能來是這樣的:

links = [] 
for row in reader2: 
    edited_link = row[0].replace("http://", "", 1) if row[0].startswith("http://") else row[0] 
    edited_link = edited_link.replace("https://", "", 1) if edited_link.startswith("https://") else edited_link 
    edited_link = edited_link.replace("www.", "", 1) if edited_link.startswith("www.") else edited_link 
    links.append(edited_link) 
+0

謝謝,我想通了,我想並做了一些編輯我的代碼在上面的帖子 –

相關問題