python-多语言功能-读excel文件并写入json,解决json输出unicode

本文介绍了一种将Excel文件转换为JSON格式的方法,用于存储多语言资源。具体实现包括定义语言单元和语言池类来处理多语言数据,并提供了一个ExcelToJson类用于打开Excel文件并将其内容转换为JSON格式。
import  xdrlib ,sys
import xlrd
import json
reload(sys)
sys.setdefaultencoding("utf-8")

TYPE_CH = 0
TYPE_EN = 1
TYPE_FR = 2


class LanUnit():
    def __init__(self):
        self.jVal = None
        self.id = 0
        self.fr = ''
        self.en = ''
        self.ch = ''

    def init_unit(self, id, jVal):
        self.jVal =jVal
        self.id = id
        try:
            self.fr = jVal['fr']
            self.en = jVal['en']
            self.ch = jVal['ch']
        except:
            pass

    def is_cur_unit(self, id):
        return id == self.id

    def get_FR(self):
        return  self.fr
    def get_EN(self):
        return  self.en
    def get_CH(self):
        return  self.ch


class LanPool():
    def __init__(self):
        self.lan_dict = {}

    @classmethod
    def reload_config(self):
        self.init_map_from_json()

    def init_map_from_json(self):
        '''
        self.raw_config = {
            "1001": {
                "fr":"fr",
                "en":"en",
                "ch":"ch"
            },
            "1002": {
                "fr": "fr",
                "en": "en",
                "ch": "ch"
            }
        }
        '''
        self.raw_config = {
            "1001": {
                "fr": "fr",
                "en": "en",
                "ch": "ch"
            },
            "1002": {
                "fr": "fr",
                "en": "en",
                "ch": "ch"
            }
        }

        for rc in self.raw_config:
            jVal = self.raw_config[rc]
            lu = LanUnit()
            lu.init_unit(rc)
            self.lan_dict[rc] = lu

    def has_key(self, id):
        return hasattr(self.lan_dict, id)

    def get_str(self, id, type):
        ID_ERROR = 'ID_ERROR(%d)'
        TYPE_ERROR = 'TYPE_ERROR(%d)'

        sRet = ''
        if self.has_key(id):
            lan_unit = self.lan_dict[id]

            if type == TYPE_FR:
                sRet = lan_unit.get_FR()
            elif type == TYPE_EN:
                sRet = lan_unit.get_EN()
            elif type == TYPE_CH:
                sRet = lan_unit.get_CH()
            else:
                sRet = TYPE_ERROR % type
        else:
            sRet = ID_ERROR  % id

        if sRet == '':
            sRet = 'UNKNOWN ERROR| type->%d | id->%d ', type, id
        return  sRet

class ExcelToJson():
    ''''''

    @classmethod
    def open_excel(cls, sPath):
        try:
            cls.data = xlrd.open_workbook(sPath)
        except Exception, e:
            print str(e)

    @classmethod
    def data_to_json(cls, sExcel_Path, sOutput_Path, sheet_index):
        cls.open_excel(sPath)
        if cls.data == None:
            return
        table = cls.data.sheets()[sheet_index]
        nrows = table.nrows
        ncols = table.ncols
        colnames = table.row_values(0)

        jVal = {}
        for i in range(1, nrows):
            id = int(table.cell_value(i, 0))
            ch = table.cell_value(i, 1)
            en = table.cell_value(i, 2)
            fr = table.cell_value(i, 3)

            sub_jVal = {
                'ch':ch,
                'en':en,
                'fr':fr
            }
            jVal[id] = sub_jVal

        # Multilingual
        with open(sOutput_Path, 'w') as json_file:
            json_file.write(json.dumps(jVal, sort_keys=True, indent=4, ensure_ascii=False))#unicode到文字


if __name__ == "__main__":
    etj = ExcelToJson()
    sPath = '123.xlsx'
    sPath1 = 'Multilingual.json'
    etj.data_to_json(sPath, sPath1, 0)
### 回答1: 要在Python中创建JSON文件写入内容,可以使用内置的`json`模块。首先,导入模块: ``` import json ``` 然后,创建一个字典来表示要写入JSON文件的数据: ``` data = { "名字": "小明", "年龄": 20, "城市": "北京" } ``` 接下来,打开一个文件,以写入模式(`'w'`)创建一个新的JSON文件: ``` with open('data.json', 'w') as json_file: json.dump(data, json_file, ensure_ascii=False, indent=4) ``` 在上面的代码中,`data.json`是要创建的JSON文件文件名。`json.dump()`函数用于将字典写入JSON文件。`ensure_ascii=False`参数用于确保在JSON文件中保留非ASCII字符的原始字符,而不是将它们转换为Unicode转义序列。`indent`参数指定要应用的缩进级别,设置为`4`使得JSON文件易于阅。 最后,通过关闭文件来完成JSON文件的创建和写入: ``` json_file.close() ``` 通过上述步骤,您就可以成功地创建一个JSON文件将数据写入其中。 ### 回答2: 要使用Python创建JSON文件写入内容,你需要使用`json`模块。下面是一个例子: ```python import json # 创建一个JSON数据 data = { "name": "John", "age": 30, "city": "New York" } # 将数据写入JSON文件 with open("data.json", "w") as file: json.dump(data, file) print("JSON文件创建成功!") ``` 在上面的代码中,我们先创建了一个包含一些数据的字典`data`。然后,使用`open()`函数以写入模式打开一个名为`data.json`的文件使用`json.dump()`函数将数据写入文件中。最后,我们打印一条成功的消息。 通过运行上述代码,会在当前目录下创建一个名为`data.json`的文件将`data`字典中的数据写入文件中。 希望对你有所帮助! ### 回答3: 要在Python中创建JSON文件写入内容,可以按照以下步骤进行: 1. 首先,需要导入Pythonjson模块。可以使用以下代码实现:`import json` 2. 接下来,创建一个字典或者列表,作为要写入JSON文件的内容。例如,我们创建一个包含姓名和年龄的字典:`data = {"name": "Tom", "age": 25}` 3. 使用`open()`函数创建一个新文件,其中指定文件名和写入模式。例如,我们创建一个名为`data.json`的文件写入模式打开:`file = open("data.json", "w")` 4. 使用`json.dump()`函数将字典或列表写入JSON文件中。该函数需要两个参数:要写入的数据和目标文件。代码如下:`json.dump(data, file)` 5. 最后,使用`close()`函数关闭文件,以确保写入操作完成。例如:`file.close()` 完成上述步骤后,就成功创建写入内容到JSON文件中了。下面是完整的代码示例: ```python import json data = {"name": "Tom", "age": 25} file = open("data.json", "w") json.dump(data, file) file.close() ``` 这样,JSON文件`data.json`将被创建在当前工作目录中,包含了`{"name": "Tom", "age": 25}`的内容。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值