从字符串数据的json.dumps中删除双引号

时间:2012-03-06 02:06:48

标签: python json

我有一些数据,我正在从数据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"],

无论如何我有没有双引号的输出?

3 个答案:

答案 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用于数字列表。