从Python 3.4.3中删除csv文件中的特定行

时间:2015-08-23 11:09:46

标签: python csv row

我正在编写我的第一个Python文件,它基本上抓取了一些webdata并保存到.csv文件中(并且正在工作,见下文)。

数据结构是一致的,但有一个由大约17行组成的标题。我想将csv导入SQL,但是它的头文件数据有问题,即使我告诉它开始从第18行读取等,除非我手动删除第1-17行,否则它无法看到数据。

我认为最简单的选择就是删除第1-17行作为我下面的Python代码的一部分。但我不知道从哪里开始,所以任何提示赞赏。

import urllib.request, urllib.parse, urllib.error

ASXCode = 'CSL'

url = 'http://chartapi.finance.yahoo.com/instrument/1.0/' + ASXCode + '.ax/chartdata;type=quote;range=1d/csv'
urllib.request.urlretrieve(url, "Intra_" + ASXCode + ".csv")

1 个答案:

答案 0 :(得分:0)

您可以这样做,首先将webdata下载并保存到临时文件中,然后将其复制到最终目标文件,但跳过开头的前17行。

import csv
import os
import urllib.request, urllib.parse, urllib.error

ASXCode = 'CSL'
local_filename = "Intra_" + ASXCode + ".csv"
url = ('http://chartapi.finance.yahoo.com/instrument/1.0/' + ASXCode +
       '.ax/chartdata;type=quote;range=1d/csv')

temp_filename, headers = urllib.request.urlretrieve(url)

with open(temp_filename, 'r', newline='') as inf, \
     open(local_filename, 'w', newline='') as outf:
    reader = csv.reader(inf)
    writer = csv.writer(outf)
    for _ in range(17):   # skip first 17 rows
        next(reader)
    writer.writerows(reader)  # copy the rest

os.remove(temp_filename)  # clean up
print('{} downloaded'.format(local_filename))