将变量类型保留在json.dump中

卡洛斯

我正在读取一堆csv文件,其中的行包含以下字符和数字:

"T55BSU","@","IT-196","IT","NO","@",1,385.82,1.4011825391667,"LFA","Economy", ...
"343OA3","A:1893BC6","FR-7139","FR","NO","@",1,805.01,1.4011825391667,"LFA","Economy", ...
...

我有一个小的python脚本,它遍历文件并将其内容转储为JSON格式:

#!/usr/bin/python

import csv
import json

from os import listdir
from os.path import isfile, join

csvpath = "path to csv dir"
jsonpath = "path to json dir"

onlyfiles = [ f for f in listdir(csvpath) if isfile(join(csvpath,f)) ]

fieldnames = ("names of columns")

for files in onlyfiles:
    name = files.split('.')
    csvname = str(csvpath) + str(files)
    jsoname = str(jsonpath) + str(name[0]) + '.json'

    print "Opening " + str(csvname) + "\n"
    csvfile = open(csvname, 'r')

    print "Writing " + str(jsoname) + "\n"
    jsonfile = open(jsoname, 'w')

    reader = csv.DictReader(csvfile, fieldnames)

    for row in reader:
        json.dump(row, jsonfile)
        jsonfile.write('\n')

我的问题是,JSON文件中的所有值都将这样转换为字符串:

{"REFUND_SW": "N", "DEST_COUNTRY": "IT", "LOWCOST_CAR": "NO", "CURRATE": "1.4011825391667", "DEFAULT_CLIENT_GROUP_CD": "IT-196", "MAIN_SUPPLIER_CODE": "BV", "DEST_CITY": "ROME", "TRAVEL_PURPOSE": "C", "FARE_TYPE": "C", "CONNECTION_TIME": "0", "BOOKING_DATE": "2014-04-14", "FLIGHT_DURATION": "70"}

但是,我想:

{"REFUND_SW": "N", "DEST_COUNTRY": "IT", "LOWCOST_CAR": "NO", "CURRATE": 1.4011825391667, "DEFAULT_CLIENT_GROUP_CD": "IT-196", "MAIN_SUPPLIER_CODE": "BV", "DEST_CITY": "ROME", "TRAVEL_PURPOSE": "C", "FARE_TYPE": "C", "CONNECTION_TIME": 0, "BOOKING_DATE": "2014-04-14", "FLIGHT_DURATION": 70}

如何强制json.dump不能将所有内容都转换为字符串?在原始的csv文件中,它们被写为数字...

谢谢

詹多布

问题不是json.dumps,而是csv阅读器。每个值都解释为字符串(从csv文件读取数据并转换为正确的数据类型

如果您知道列的数据类型,则可以在阅读后进行转换:

#!/usr/bin/python

import csv
import json

csvfile = [
    '"name","age","grade"',
    '"ann",42,1.3',
    '"hans",23,1.7'
]
row_types = {'name': str, 'grade': float, 'age': int}

reader = csv.DictReader(csvfile)

jsonfile = open('test.json', 'w')
for row in reader:
    print('reader produces strings only:')
    print(row)
    print('convert to known types')
    row_converted = {k: row_types[k](v) for k, v in row.items()}
    print(row_converted)
    json.dump(row_converted, jsonfile)
    jsonfile.write('\n')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将排除的变量保留在summarise_at中

来自分类Dev

将grep输出保留在shell变量中

来自分类Dev

将选择保留在列表中

来自分类Dev

将文本保留在div中

来自分类Dev

将事件保留在Fullcalendar中

来自分类Dev

bash将变量引用保留在另一个变量中

来自分类Dev

将词法上下文保留在类型的原型中

来自分类Dev

Python-如何将元素类型保留在列表中

来自分类Dev

将javascript变量的值保留在浏览历史记录中

来自分类Dev

将旧变量值保留在标签字段中

来自分类Dev

将数据保留在静态变量中是不好的做法吗?

来自分类Dev

将变量的值保留在递归函数python 3.3中

来自分类Dev

通过将数据集中的所有变量保留在r中来计算均值

来自分类Dev

将方法添加的所有值保留在单独的变量中

来自分类Dev

(javax或hibernate)验证后,如何将变量保留在JSP中

来自分类Dev

嵌套布局/视图,将内容变量保留在Zend Framework 2中

来自分类Dev

如何在变量中重定向stderr但将stdout保留在控制台中

来自分类Dev

将变量的初始值保留在递归函数中

来自分类Dev

json-ld将某些对象保留在纯json中

来自分类Dev

如何单独删除锚标签,但将文本保留在json数据中

来自分类Dev

Laravel数据库多对多(Mysql)或将Json保留在表中

来自分类Dev

如何单独删除锚标签,但将文本保留在json数据中

来自分类Dev

会话变量是否保留在php的内存中

来自分类Dev

局部变量是否保留在javascript的内存中?

来自分类Dev

使用AWS参数存储的更好方法?1.将所有变量作为JSON保留在单个参数中2.将每个变量作为单独的参数保留

来自分类Dev

将多元时间序列用作lm中的数据时,将tsp属性保留在响应变量中

来自分类Dev

将文本保留在RVest中的HTML中

来自分类Dev

将主体保留在排队的后台工作项中

来自分类Dev

无法将元素保留在父元素中

Related 相关文章

  1. 1

    将排除的变量保留在summarise_at中

  2. 2

    将grep输出保留在shell变量中

  3. 3

    将选择保留在列表中

  4. 4

    将文本保留在div中

  5. 5

    将事件保留在Fullcalendar中

  6. 6

    bash将变量引用保留在另一个变量中

  7. 7

    将词法上下文保留在类型的原型中

  8. 8

    Python-如何将元素类型保留在列表中

  9. 9

    将javascript变量的值保留在浏览历史记录中

  10. 10

    将旧变量值保留在标签字段中

  11. 11

    将数据保留在静态变量中是不好的做法吗?

  12. 12

    将变量的值保留在递归函数python 3.3中

  13. 13

    通过将数据集中的所有变量保留在r中来计算均值

  14. 14

    将方法添加的所有值保留在单独的变量中

  15. 15

    (javax或hibernate)验证后,如何将变量保留在JSP中

  16. 16

    嵌套布局/视图,将内容变量保留在Zend Framework 2中

  17. 17

    如何在变量中重定向stderr但将stdout保留在控制台中

  18. 18

    将变量的初始值保留在递归函数中

  19. 19

    json-ld将某些对象保留在纯json中

  20. 20

    如何单独删除锚标签,但将文本保留在json数据中

  21. 21

    Laravel数据库多对多(Mysql)或将Json保留在表中

  22. 22

    如何单独删除锚标签,但将文本保留在json数据中

  23. 23

    会话变量是否保留在php的内存中

  24. 24

    局部变量是否保留在javascript的内存中?

  25. 25

    使用AWS参数存储的更好方法?1.将所有变量作为JSON保留在单个参数中2.将每个变量作为单独的参数保留

  26. 26

    将多元时间序列用作lm中的数据时,将tsp属性保留在响应变量中

  27. 27

    将文本保留在RVest中的HTML中

  28. 28

    将主体保留在排队的后台工作项中

  29. 29

    无法将元素保留在父元素中

热门标签

归档