2014-09-24 47 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