我有一些数据,我正在从数据Feed中检索文本。例如,我收到如下数据:
1105488000000, 34.1300, 34.5750, 32.0700, 32.2800\r\n
1105574400000, 32.6750, 32.9500, 31.6500, 32.7300\r\n
1105660800000, 36.8250, 37.2100, 34.8650, 34.9000\r\n
等。
(这是股票数据,其中第一列是时间戳,下一列是该时间段的开盘价,最高价,最低价和收盘价。)
我想将其转换为json,如下所示:
[
[1105488000000, 34.1300, 34.5750, 32.0700, 32.2800],
[1105574400000, 32.6750, 32.9500, 31.6500, 32.7300],
[1105660800000, 36.8250, 37.2100, 34.8650, 34.9000],
...
我正在使用的代码是:
lines = data.split("\r\n");
output = []
for line in lines:
currentLine = line.split(",")
currentLine = [currentLine[0] , currentLine[1] , currentLine[2], currentLine[3], currentLine[4]]
output.append(currentLine)
jsonOutput = json.dumps(output)
但是,当我这样做时,我发现值是:
[
["1105488000000", "34.1300", "34.5750", "32.0700", "32.2800"],
["1105574400000", "32.6750", "32.9500", "31.6500", "32.7300"],
["1105660800000", "36.8250", "37.2100", "34.8650", "34.9000"],
无论如何我有没有双引号的输出?
答案 0 :(得分:3)
在输出之前将数据传递到int()
或float()
构造函数,以便将其转换为数字。
答案 1 :(得分:3)
...
currentLine = [float(i) for i in currentLine]
output.append(currentLine)
...
答案 2 :(得分:2)
更改
currentLine = [currentLine[0] , currentLine[1] , currentLine[2], currentLine[3], currentLine[4]]
output.append(currentLine)
到
currentData = map(lambda num: float(num.strip()) , currentLine)
output.append(currentData)
每当您使用
初始化currentLine
时
currentLine = line.split(",")
currentLine
的所有元素都是字符串。因此,无论何时将其写入JSON,您都可以获得JSON字符串。通过将所有字符串转换为数字,您可以得到没有引号的内容。另外,我添加了strip()
调用来处理前导空格和尾随空格,如数据示例所示。
P.S。请不要对两个完全不同的东西使用相同的变量名。将currentLine
用于字符串列表更为明确,将currentData
用于数字列表。