【问题标题】:Python - Parsing a text onto columns by the position of each itemPython - 按每个项目的位置将文本解析到列上
【发布时间】:2016-11-12 13:24:52
【问题描述】:

Bovespa(巴西证券交易所)提供一个文件,其中包含一个时间范围内的所有报价。文件太大,每一行都是这样的真实样本:

012016010402AAPL34      010APPLE       DRN          R$  000000000415000000000042200000000004150000000000421300000000042080000000003950000000000435000005000000000000012500000000000052664400000000000000009999123100000010000000000000BRAAPLBDR004115

所以,在寻找文档时,我发现列映射是这样的:

  • char 01 到 02:(int) 寄存器类型;
  • char 03 到 10:股票报价信息的(日期)日期;
  • char 11 到 12:(int)某种代码;
  • char 13 到 24:(str)股票代码;
  • ....

我开始学习 Python 并尝试读取包含此数据的文件,并使用此代码使每一行都成功:

import pandas as pd
dataset1 = pd.read_table('bmfbovespaquotes/DemoCotacoesHistoricas12022003.txt')

我认为这可能是一个愚蠢的问题,但我还没有找到解决方案,所以如果你知道解决这个问题的方法,请分享。

谢谢

【问题讨论】:

  • 不客气!请发布您的解决方案作为答案 - 它可能会在未来帮助其他人,尤其是那些想要解析 Bovespa (brazilian stock exchange) 数据的人

标签: python pandas jupyter bigdata


【解决方案1】:

你有一个f固定的width f格式:这样就可以了。

pd.read_fwf(file_path, widths=[...], names=[...])

您应该传递宽度列表,在您的情况下,宽度列表以 [2,8,2,10,...] 开头,列列表 ['register','date','code','ticker',...]

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2020-06-15
    • 2019-08-10
    相关资源
    最近更新 更多