0

我需要阅读股票报价的文本文件并对每个股票数据(即文件中的一行)进行一些处理。

股票数据如下所示:

[class,'STOCK'],[symbol,'AAII'],[open,2.60],[high,2.70],[low,2.53],[close,2.60],[volume,458500],[date,'21-Dec-04'],[openClosePDiff,0.0],[highLowPDiff,0.067],[closeEqualsLow,'false'],[closeEqualsHigh,'false']

如何将行拆分为标记,其中每个标记都包含在方括号中,.ie 对于上面的行,标记应该是"class, 'STOCK'""symbol, 'AAII'"等等。

4

4 回答 4

3

print(re.findall("\[(.*?)\]", inputline))

或者也许没有正则表达式:

print(inputline[1:-1].split("],["))

于 2013-04-15T15:25:28.027 回答
1

试试这个代码:

#!/usr/bin/env python3

import re

str="[class,'STOCK'],[symbol,'AAII'],[open,2.60],[high,2.70],[low,2.53],[close,2.60],[volume,458500],[date,'21-Dec-04'],[openClosePDiff,0.0],[highLowPDiff,0.067],[closeEqualsLow,'false'],[closeEqualsHigh,'false']"
str = re.sub('^\[','',str)
str = re.sub('\]$','',str)
array = str.split("],[")
for line in array:
    print(line)
于 2013-04-15T15:27:28.173 回答
1

从...开始:

re.findall("[^,]+,[^,]+", a)

这将为您提供以下列表:

[class,'STOCK'][symbol,'AAII']等等,然后你可以剪掉括号。

如果您想要一个功能性的衬里,请使用:

map(lambda x: x[1:-1], re.findall("[^,]+,[^,]+", a))

第一部分每秒拆分一次,,地图(对于列表中的每个项目,使用lambda函数..)切割括号。

于 2013-04-15T15:28:24.510 回答
1
import re

s = "[class,'STOCK'],[symbol,'AAII'],[open,2.60],[high,2.70],[low,2.53],[close,2.60],[volume,458500],[date,'21-Dec-04'],[openClosePDiff,0.0],[highLowPDiff,0.067],[closeEqualsLow,'false'],[closeEqualsHigh,'false']"

m = re.findall(r"([a-zA-Z0-9]+),([a-zA-Z0-9']+)", s)
d= { x[0]:x[1] for x in m }

print d

您可以在此处运行代码段:http://liveworkspace.org/code/EZGav$35

于 2013-04-15T15:33:57.430 回答