```python import os import json def paser(text): lines = filter(lambda x: x and not x.startswith('//'),map(lambda x:x.strip(),text.split('\n'))) block_comment = False new_lines = [] for l in lines: if l[:2] == '/*' and l[-2:] == '*/': continue elif l[:2] == '/*': block_comment = True continue elif '*/' in l and block_comment: block_comment = False continue elif block_comment: continue else: new_lines.append(l) return '\n'.join(new_lines) def loads(text): return json.loads(paser(text)) item_types = {} item_json = {} item_sname = {} path = u'/Users/bhr/Library/Application Support/Steam/steamapps/common/Starbound/giraffe_storage/mods/zh-cn/items' def func(args,dirs,files): for f in files: filename_l = f.split('.') if len(filename_l) == 3 and filename_l[-1] == 'patch': item_name = filename_l[0] item_type = filename_l[1] if item_types.has_key(item_type): item_types[item_type].append(item_name) item_types[item_type].sort() else: item_types[item_type] = [item_name] filepath = os.path.join(dirs,f) with file(filepath, 'r') as f: try: item_json[item_name] = loads(f.read()) except: pass os.path.walk(path,func,0) for k,v in item_json.iteritems(): for it in v: if it.has_key(u'path') and it[u'path'] == u'/shortdescription': item_sname[k] = it[u'value'] item_oname = {} item_ojson = {} opath = u'/Users/bhr/Library/Application Support/Steam/steamapps/common/Starbound/assets/package' def func2(args, dirs,files): for f in files: filename_l = f.split('.') if (len(filename_l) > 1) and filename_l[-1] in item_types: filepath = os.path.join(dirs,f) with file(filepath, 'r') as ff: try: data = loads(ff.read()) except: print 'json_err: {0}'.format(filepath) else: try: if 'itemName' in data: item_ojson[data['itemName']] = data item_oname[data['itemName']] = data.get('shortdescription','') elif 'name' in data: item_ojson[data['name']] = data item_oname[data['name']] = data.get('shortdescription','') except: print 'KeyError: itemName, {0}'.format(filepath) os.path.walk(opath,func2,0) filetypes = {} def func3(args, dirs,files): for f in files: filename_l = f.split('.') if (len(filename_l) > 1): filetypes[filename_l[-1]] = True os.path.walk(opath,func3,0) has_names = [] for t in filetypes: if t in item_types: has_names.extend(item_types[t]) has_names = sorted(list(set(has_names))) os.path.walk(opath,func2,0) name_trans = {} for k,v in item_sname.iteritems(): if k in item_oname: name_trans[k] = [item_oname[k],v] for n in has_names: if n not in item_sname: print n save_file = u'/Users/bhr/starbound_trans.csv' with open(save_file, 'w') as f: for k,v in sorted(name_trans.iteritems()): try: cn_name = v[1].encode('utf-8') except: continue line = "{0},{1},{2}\n".format(k,v[0],cn_name) f.write(line) ``` <style>.wiki-article pre{max-width:none;max-height:none;}</style> <style>.wiki-article{background-color:black !important;color:white !important;}body{color: #FFF !important;background-color: #000 !important;}td{vertical-align: middle !important;}.wiki-article table{width:auto !important;margin:auto !important;}</style>