我正在使用urllib从以下网站https://marketdata.theocc.com/series-search?symbolType=U&symbol=GOOGL递归收集报告(文本文件)。我想避免保存此文本文件,因为我需要重复该操作。文本文件看起来像这样
Series Search Results for GOOGL
Products for this option symbol are traded on:
AMEX ARCA BATS BOX C2 CBOE EDGX EMLD GEM ISE MCRY MIAX MPRL NOBO NSDQ PHLX
Series/contract Strike Open Interest
ProductSymbol year Month Day Integer Dec C/P Call Put Position Limit
GOOGL 2020 07 10 750 000 C P 0 104 25000000
GOOGL 2020 07 10 760 000 C P 0 0 25000000
GOOGL 2020 07 10 770 000 C P 0 0 25000000
我对ProductSymbol之后立即开始的行以及以熊猫数据框格式显示的年,月,日(=到期日期)和整数,十二月(=终止)列感兴趣,如下所示:
Expiry Strike
2020-07-10 750.000
...
首先,我不确定如何删除前几行(除了蛮力,即在for循环中进行测试)。此外,当我使用以下内容时:
symbol = 'GOOGL'
url = 'https://marketdata.theocc.com/series-search?symbolType=O&symbol=' + symbol
file = urllib.request.urlopen(url)
#Method 1:
for line in file:
decoded = line.decode('UTF-8')
print(decoded)
#Method2:
df = pd.read_csv(file, sep=',' + '\t', engine='python')
print(df)
我得到以下打印输出:
Method1:
GOOGL 2020 07 10 750 000 C P 0 104 25000000
Method2:
GOOGL \t\t2020\t07\t10\t750\t000\tC P
所以method1确实在产生一些正确分隔的行,但这意味着我必须遍历每一行。 Method2确实显示了一个数据框,但包含未合并的数据:不幸的是,对我而言,我感兴趣的5列已合并。我猜没有考虑sep ='\ t',因为它应该在字符串值级别进行。因此,这是否意味着我必须遍历行并进行一些字符串拆分才能取消合并数据?还是有一种更直接,更优雅的处理方式?