簡體   English   中英

使用“;”下載txt 定界符並使用python轉換為.CSV

[英]Download txt with ';' delimiter and convert to .CSV with python

我必須下載此.txt文件: 鏈接

然后,我必須將其解析為.csv並刪除所有標頭。

我試圖這樣做,但是對我來說不起作用,這是我的代碼:

import urllib
import csv

outfilename = "temp.txt"
csvfile = "data.csv" #open('data.csv', 'wb')
url_of_file = "http://www.ceps.cz/_layouts/15/Ceps/_Pages/GraphData.aspx?mode=txt&from=1/1/2011%2012:00:00%20AM&to=1/2/2011%2011:59:59%20PM&hasinterval=True&sol=1&lang=ENG&agr=MI&fnc=AVG&ver=RT&"
urllib.request.urlretrieve(url_of_file, outfilename) 


with open(outfilename, "rb") as infile, open(csvfile, 'wb') as outfile:
    in_txt = csv.reader(infile, delimiter = ';')
    out_csv = csv.writer(outfile)
    out_csv.writerows(in_txt)

在這段代碼中,我沒有對標頭執行任何操作,因為即使轉換也無法進行。

urllib沒有request名稱空間。

替換此行

urllib.request.urlretrieve(url_of_file, outfilename) 

有了這個

urllib.urlretrieve(url_of_file, outfilename) 

更新時間

您需要導入urllib.request ,而不僅僅是urllib

另外,您需要以文本模式而非二進制模式(即“ rb”或“ wb”)打開文件。

import urllib.request
import csv

outfilename = "temp.txt"
csvfile = "data.csv" #open('data.csv', 'wb')
url_of_file = "http://www.ceps.cz/_layouts/15/Ceps/_Pages/GraphData.aspx?mode=txt&from=1/1/2011%2012:00:00%20AM&to=1/2/2011%2011:59:59%20PM&hasinterval=True&sol=1&lang=ENG&agr=MI&fnc=AVG&ver=RT&"
urllib.request.urlretrieve(url_of_file, outfilename)


with open(outfilename, "r") as infile, open(csvfile, 'w') as outfile:
    in_txt = csv.reader(infile, delimiter = ';')
    out_csv = csv.writer(outfile)
    out_csv.writerows(in_txt)

您可能將此代碼用於Python 2:

    import urllib
    import csv
    import urllib2

    outfilename = "temp.txt"
    csvfile = "data.csv" #open('data.csv', 'wb')
    url_of_file = "http://www.ceps.cz/_layouts/15/Ceps/_Pages/GraphData.aspx?mode=txt&from=1/1/2011%2012:00:00%20AM&to=1/2/2011%2011:59:59%20PM&hasinterval=True&sol=1&lang=ENG&agr=MI&fnc=AVG&ver=RT&"
    #urllib.request.urlretrieve(url_of_file, outfilename) 

    response = urllib2.urlopen(url_of_file)
    output = open(outfilename,'wb')
    output.write(response.read())
    output.close()

    with open(outfilename, "rb") as infile, open(csvfile, 'wb') as outfile:
        in_txt = csv.reader(infile, delimiter = ';')
        out_csv = csv.writer(outfile)
        i = 0
        for row in in_txt:
            i +=1
            if i>3:
                out_csv.writerow(row)

Python 3:

    import urllib.request
    import csv

    outfilename = "temp.txt"
    csvfile = "data.csv"
    url_of_file = "http://www.ceps.cz/_layouts/15/Ceps/_Pages/GraphData.aspx?mode=txt&from=1/1/2011%2012:00:00%20AM&to=1/2/2011%2011:59:59%20PM&hasinterval=True&sol=1&lang=ENG&agr=MI&fnc=AVG&ver=RT&"
    urllib.request.urlretrieve(url_of_file, outfilename) 

    with open(outfilename, encoding='utf-8') as infile, open(csvfile, 'w', newline='') as outfile:
            in_txt = csv.reader(infile, delimiter = ';')
            out_csv = csv.writer(outfile)
            i = 0
            for row in in_txt:
                i +=1
                if i>3:
                    out_csv.writerow(row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM