使用csv阅读器获取URL并将其放入列表中

时间:2016-02-26 04:47:33

标签: python csv reader

我试图制作一个非常简单的程序,其中我有两个带有域名列表或博客帖子网址的csv文件。我试图导入第一个,并将域和价格列列入我设法做的字典。

现在我要导入第二个csv文件,它只是一列博客文章网址。

从第二个文件中导入网址并将其打印出来后,每个网址似乎都被包含在[]中的列表中,如下所示:

[['http://www.gardening-blog.com/post-1'],['http://www.foodie-blog.com/post-2'],['http://www.someotherblog.com/post-1'] ....等等

这与使用csv reader导入有关吗?

另外我还有一个问题,剥离'http://'和'www'的最佳方法是什么。从网址列表?我有两种方法,我尝试下面使用地图和加入(注释掉),但他们不会工作,我有一种感觉,这与列表问题有关。我用字典做了这个,但我不能用列表替换。

感谢

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]

1 个答案:

答案 0 :(得分:1)

因此,基本上csv.reader读取自定义csv文件,而他的next()方法提供下一行,而在python中,此行表示为list,即使它由单个字段组成。这就是为什么你收到包含单个元素的列表列表,而不是像list(reader2)这样的隐式读取,可能你想明确地想要它:

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

如果您想从网址中删除“http://”和“www”,您可以在该结构中执行此操作:

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)