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

Delete specific rows in csv file from Python 3.4.3

我正在编写我的第一个 Python 文件,它基本上是抓取一些网络数据并保存到 .csv 文件(并且正在运行,见下文)。

数据结构是一致的,但有一个 header 由大约 17 行组成。我想将 csv 导入 SQL,但是 header 数据有问题,即使我告诉它从第 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")

你可以这样做,首先下载 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))