2014-09-24 51 views
0

对不起,如果这是多余的,但我已经很努力地寻找答案,但我一直无法找到一个。我很新,所以请耐心等待:Python无法读取我的CSV由于额外的回车

我的目标是通过一个csv完整的URL读取一段代码,并返回一个http状态码。我有Python 2.7.5。每行的结果会给我的网址和状态代码,如下所示:www.stackoverflow.com:200.

我的csv是单列csv充满了数百个网址,每行一个。我使用的代码在下面,当我运行这段代码时,它给了我一个分隔两个网址的代码:

{http://www.stackoverflow.com/test \ http://www.stackoverflow.com/questions/':404}

我想看到的是两个URL分离,每个都有自己的HTTP状态代码:

{ 'http://www.stackoverflow.com ':200,' http://www.stackoverflow.com/questions/':404}

但似乎有在Python读取csv时是额外的\ r,所以它不会正确读取url。我知道人们说strip()并不是一个包罗万象的刮水器,所以对于如何使这项工作做出任何建议将非常感激。

import requests 
def get_url_status(url): 
    try: 
     r = requests.head(url) 
     return url, r.status_code 
    except requests.ConnectionError: 
     print "failed to connect" 
     return url, 'error' 


results = {} 
with open('url2.csv', 'rb') as infile: 
    for url in infile: 
     url = url.strip() # "http://datafox.co" 
     url_status = get_url_status(url) 
     results[url_status[0]] = url_status[1] 
    print results 
+0

这似乎与csv格式没有任何关系,但是如果您向我们展示您正在尝试阅读的实际文本文件的示例,它肯定会有所帮助。 – 2014-09-24 01:08:21

+0

如果您正在读取CSV文件,请考虑使用python的csv模块,该模块将\ r作为新行字符正确对待。 https://docs.python.org/2/library/csv.html – 2014-09-24 02:20:24

+0

嘿,那里,谢谢你的评论。我已经发现了这个问题 - 下次我一定要包含我指的实际文件的样本。再次感谢! – newbie68 2014-09-24 16:34:40

回答

0

你可能需要弄清楚您的CSV文件如何格式化,喂养它到Python之前。

首先,确保它有一致的行尾。如果有时候有换行符,而其他的则可能是需要纠正的问题。

如果您使用的是* ix系统,tr可能会有用。

+0

谢谢你的提示。你是对的,一旦我以不同的格式保存文件,它就可以正常工作。感谢你的宝贵时间。 – newbie68 2014-09-24 16:35:30