如何使用自定义定界符和键值对解析文本列表

时间:2019-06-14 20:09:33

标签: python python-3.x

我们对数据有一个相当结构化的模式,但是我不知道如何有效地处理它。

现在,我们使用了for循环遍历每一行,并在定界符和值对之间进行拆分,但是...“必须有更好的方法”

这是示例行:

|207=NYSE|11002=N|10=232|

关于数据的一些注释

  • 管道是分隔符,但是文档具有自定义分隔符
  • 此示例中的
  • 207、11002和10是变量/列标题
  • NYSE,N和232是值
  • 并非所有变量都可以保证在每一行中列出
  • 我相信None / NULL是一个空字符串|207=|

2 个答案:

答案 0 :(得分:1)

给出这个

data = '|207=NYSE|99=|11002=N|10=232|'

然后这个

kv = dict(arg.split('=', 1) for arg in data.split('|') if arg)

也许是将其转化为字典的最简单,最有效的方法:

{'207': 'NYSE', '99': '', '11002': 'N', '10': '232'}

答案 1 :(得分:0)

哈希表!

将需要更多信息,但是如果您已经有了数据,则可以将其分类到可以索引的位置,从而减少总体处理时间!

当然,对条目的位置进行初始计算会花费一些时间,但是

类似

def hash(astring, tablesize):
sum = 0
for pos in range(len(astring)):
    sum = sum + ord(astring[pos])

return sum%tablesize