当前位置: 首页 > news >正文

做网站搜索如何显示官网微信群网站有哪些

做网站搜索如何显示官网,微信群网站有哪些,淘宝关键词指数,网址大全域名解析1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组#xff0c;否则没有什么意义#xff0c;即lua对象要是一个数组比较合理。这里使用开源的json.lua#xff0c; 但是开源的#xff0c;对于数字作下标的#xff0c;或者是一个数组里#xff0c;不同类型的key…1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组否则没有什么意义即lua对象要是一个数组比较合理。这里使用开源的json.lua 但是开源的对于数字作下标的或者是一个数组里不同类型的key混合的情况无法转换所以我进行了一定的改进先进行了扫描判断是不是混合的key是的话取消key,把key到结构里作为一个字段处理。源码如下 local json loadfile(json.lua/json.lua)() t1 new Test(); print(json.encode(t1))库代码 -- -- json.lua -- -- Copyright (c) 2020 rxi -- -- Permission is hereby granted, free of charge, to any person obtaining a copy of -- this software and associated documentation files (the Software), to deal in -- the Software without restriction, including without limitation the rights to -- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -- of the Software, and to permit persons to whom the Software is furnished to do -- so, subject to the following conditions: -- -- The above copyright notice and this permission notice shall be included in all -- copies or substantial portions of the Software. -- -- THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -- SOFTWARE. --local json { _version 0.1.2 }------------------------------------------------------------------------------- -- Encode -------------------------------------------------------------------------------local encodelocal escape_char_map {[ \\ ] \\,[ \ ] \,[ \b ] b,[ \f ] f,[ \n ] n,[ \r ] r,[ \t ] t, }local escape_char_map_inv { [ / ] / } for k, v in pairs(escape_char_map) doescape_char_map_inv[v] k endlocal function escape_char(c)return \\ .. (escape_char_map[c] or string.format(u%04x, c:byte())) endlocal function encode_nil(val)return null endlocal function encode_table(val, stack)local res {}local mixedKeyType falselocal tmpobj{}stack stack or {}-- Circular reference?if stack[val] then error(circular reference) endstack[val] trueif rawget(val, 1) ~ nil or next(val) nil then-- Treat as array -- check keys are valid and it is not sparselocal n 0for k in pairs(val) doif type(k) ~ number then--error(invalid table: mixed or invalid key types)mixedKeyTypetrue;endn n 1end-- if n ~ #val then-- error(invalid table: sparse array)-- end-- Encodefor i, v in ipairs(val) doif mixedKeyType then if type(v) table thenrawset(v, vv__objid,tostring(k))elsetmpobj{}tmpobj.k i;tmpobj.v v;v tmpobj;endendtable.insert(res, encode(v, stack))endstack[val] nilreturn [ .. table.concat(res, ,) .. ]else-- Treat as an objectfor k, v in pairs(val) doif type(k) ~ string then-- error(invalid table: mixed or invalid key types : ..type(k) .. value:..tostring(k))mixedKeyType true;break;endendfor k, v in pairs(val) doif mixedKeyType thenif type(v) table thenrawset(v, vv__objid,tostring(k))elsetmpobj{}tmpobj.k k;tmpobj.v v;v tmpobj;endtable.insert(res, encode(v, stack))elsetable.insert(res, encode(k, stack) .. : .. encode(v, stack))endendstack[val] nilif mixedKeyType thenreturn [ .. table.concat(res, ,\n) .. ]elsereturn { .. table.concat(res, ,) .. }endend endlocal function encode_string(val)return .. val:gsub([%z\1-\31\\], escape_char) .. endlocal function encode_number(val)-- Check for NaN, -inf and infif val ~ val or val -math.huge or val math.huge thenerror(unexpected number value .. tostring(val) .. )endreturn string.format(%.14g, val) endlocal type_func_map {[ nil ] encode_nil,[ table ] encode_table,[ string ] encode_string,[ number ] encode_number,[ boolean ] tostring, }encode function(val, stack)local t type(val)local f type_func_map[t]if f thenreturn f(val, stack)enderror(unexpected type .. t .. ) endfunction json.encode(val)return ( encode(val) ) end------------------------------------------------------------------------------- -- Decode -------------------------------------------------------------------------------local parselocal function create_set(...)local res {}for i 1, select(#, ...) dores[ select(i, ...) ] trueendreturn res endlocal space_chars create_set( , \t, \r, \n) local delim_chars create_set( , \t, \r, \n, ], }, ,) local escape_chars create_set(\\, /, , b, f, n, r, t, u) local literals create_set(true, false, null)local literal_map {[ true ] true,[ false ] false,[ null ] nil, }local function next_char(str, idx, set, negate)for i idx, #str doif set[str:sub(i, i)] ~ negate thenreturn iendendreturn #str 1 endlocal function decode_error(str, idx, msg)local line_count 1local col_count 1for i 1, idx - 1 docol_count col_count 1if str:sub(i, i) \n thenline_count line_count 1col_count 1endenderror( string.format(%s at line %d col %d, msg, line_count, col_count) ) endlocal function codepoint_to_utf8(n)-- http://scripts.sil.org/cms/scripts/page.php?site_idnrsiidiws-appendixalocal f math.floorif n 0x7f thenreturn string.char(n)elseif n 0x7ff thenreturn string.char(f(n / 64) 192, n % 64 128)elseif n 0xffff thenreturn string.char(f(n / 4096) 224, f(n % 4096 / 64) 128, n % 64 128)elseif n 0x10ffff thenreturn string.char(f(n / 262144) 240, f(n % 262144 / 4096) 128,f(n % 4096 / 64) 128, n % 64 128)enderror( string.format(invalid unicode codepoint %x, n) ) endlocal function parse_unicode_escape(s)local n1 tonumber( s:sub(1, 4), 16 )local n2 tonumber( s:sub(7, 10), 16 )-- Surrogate pair?if n2 thenreturn codepoint_to_utf8((n1 - 0xd800) * 0x400 (n2 - 0xdc00) 0x10000)elsereturn codepoint_to_utf8(n1)end endlocal function parse_string(str, i)local res local j i 1local k jwhile j #str dolocal x str:byte(j)if x 32 thendecode_error(str, j, control character in string)elseif x 92 then -- \: Escaperes res .. str:sub(k, j - 1)j j 1local c str:sub(j, j)if c u thenlocal hex str:match(^[dD][89aAbB]%x%x\\u%x%x%x%x, j 1)or str:match(^%x%x%x%x, j 1)or decode_error(str, j - 1, invalid unicode escape in string)res res .. parse_unicode_escape(hex)j j #hexelseif not escape_chars[c] thendecode_error(str, j - 1, invalid escape char .. c .. in string)endres res .. escape_char_map_inv[c]endk j 1elseif x 34 then -- : End of stringres res .. str:sub(k, j - 1)return res, j 1endj j 1enddecode_error(str, i, expected closing quote for string) endlocal function parse_number(str, i)local x next_char(str, i, delim_chars)local s str:sub(i, x - 1)local n tonumber(s)if not n thendecode_error(str, i, invalid number .. s .. )endreturn n, x endlocal function parse_literal(str, i)local x next_char(str, i, delim_chars)local word str:sub(i, x - 1)if not literals[word] thendecode_error(str, i, invalid literal .. word .. )endreturn literal_map[word], x endlocal function parse_array(str, i)local res {}local n 1i i 1while 1 dolocal xi next_char(str, i, space_chars, true)-- Empty / end of array?if str:sub(i, i) ] theni i 1breakend-- Read tokenx, i parse(str, i)res[n] xn n 1-- Next tokeni next_char(str, i, space_chars, true)local chr str:sub(i, i)i i 1if chr ] then break endif chr ~ , then decode_error(str, i, expected ] or ,) endendreturn res, i endlocal function parse_object(str, i)local res {}i i 1while 1 dolocal key, vali next_char(str, i, space_chars, true)-- Empty / end of object?if str:sub(i, i) } theni i 1breakend-- Read keyif str:sub(i, i) ~ thendecode_error(str, i, expected string for key)endkey, i parse(str, i)-- Read : delimiteri next_char(str, i, space_chars, true)if str:sub(i, i) ~ : thendecode_error(str, i, expected : after key)endi next_char(str, i 1, space_chars, true)-- Read valueval, i parse(str, i)-- Setres[key] val-- Next tokeni next_char(str, i, space_chars, true)local chr str:sub(i, i)i i 1if chr } then break endif chr ~ , then decode_error(str, i, expected } or ,) endendreturn res, i endlocal char_func_map {[ ] parse_string,[ 0 ] parse_number,[ 1 ] parse_number,[ 2 ] parse_number,[ 3 ] parse_number,[ 4 ] parse_number,[ 5 ] parse_number,[ 6 ] parse_number,[ 7 ] parse_number,[ 8 ] parse_number,[ 9 ] parse_number,[ - ] parse_number,[ t ] parse_literal,[ f ] parse_literal,[ n ] parse_literal,[ [ ] parse_array,[ { ] parse_object, }parse function(str, idx)local chr str:sub(idx, idx)local f char_func_map[chr]if f thenreturn f(str, idx)enddecode_error(str, idx, unexpected character .. chr .. ) endfunction json.decode(str)if type(str) ~ string thenerror(expected argument of type string, got .. type(str))endlocal res, idx parse(str, next_char(str, 1, space_chars, true))idx next_char(str, idx, space_chars, true)if idx #str thendecode_error(str, idx, trailing garbage)endreturn res endreturn json二、把JSON转成CSV 使用pythonjson_to_csv这个库 。 它会把树形展平 import sys import json import csv import io## # Convert to string keeping encoding in mind... ## def to_string(s):try:return str(s)except:#Change the encoding type if neededreturn s.encode(utf-8)## # This function converts an item like # { # item_1:value_11, # item_2:value_12, # item_3:value_13, # item_4:[sub_value_14, sub_value_15], # item_5:{ # sub_item_1:sub_item_value_11, # sub_item_2:[sub_item_value_12, sub_item_value_13] # } # } # To # { # node_item_1:value_11, # node_item_2:value_12, # node_item_3:value_13, # node_item_4_0:sub_value_14, # node_item_4_1:sub_value_15, # node_item_5_sub_item_1:sub_item_value_11, # node_item_5_sub_item_2_0:sub_item_value_12, # node_item_5_sub_item_2_0:sub_item_value_13 # } ## def reduce_item(key, value):global reduced_item#Reduction Condition 1if type(value) is list:i0for sub_item in value:reduce_item(key_to_string(i), sub_item)ii1#Reduction Condition 2elif type(value) is dict:sub_keys value.keys()for sub_key in sub_keys:reduce_item(key_to_string(sub_key), value[sub_key])#Base Conditionelse:reduced_item[to_string(key)] to_string(value)if __name__ __main__:if len(sys.argv) ! 4:print (\nUsage: python json_to_csv.py node json_in_file_path csv_out_file_path\n)else:#Reading argumentsnode sys.argv[1]json_file_path sys.argv[2]csv_file_path sys.argv[3]with io.open(json_file_path, r, encodingutf-8-sig) as fp:json_value fp.read()raw_data json.loads(json_value)try:data_to_be_processed raw_data[node]except:data_to_be_processed raw_dataprocessed_data []header []for item in data_to_be_processed:reduced_item {}reduce_item(node, item)header reduced_item.keys()processed_data.append(reduced_item)header list(set(header))header.sort()with open(csv_file_path, w) as f:writer csv.DictWriter(f, header, quotingcsv.QUOTE_ALL)writer.writeheader()for row in processed_data:writer.writerow(row)print (Just completed writing csv file with %d columns % len(header))三、把csv转成xlsx文件 使用开源的xlsxwriter, pip先安装一下, 使用代码如下 import sys import json import csv import io from xlsxwriter.workbook import Workbookif __name__ __main__:if len(sys.argv) ! 3:print (\nUsage: python csv_to_xlsx.py csv_file xlsx_file\n)else:#Reading argumentscsvfile sys.argv[1]xlsxfile sys.argv[2]workbook Workbook(xlsxfile)worksheet workbook.add_worksheet()f open(csvfile, rt, encodingutf8)reader csv.reader(f)for r, row in enumerate(reader):for c, col in enumerate(row):worksheet.write(r, c, col)workbook.close()f.close()三步走完完成lua转excel的工作。
http://www.pierceye.com/news/413395/

相关文章:

  • .net域名可以做银行网站吗做网站用模版
  • 嘉兴市平湖市建设局网站品牌设计公司 知乎
  • jfinal网站开发模板app开发网站
  • 成都和奇乐网站建设公司怎么样研发网站要多久
  • 蓬莱做网站北京宣传片
  • 网站建设 部署与发布wordpress多说插件
  • 池州做网站的公司哪里有网站开发技术
  • 网站建设内容策划外贸软件排行榜前十名
  • 微信官方网站公众平台郸城建设银行网站
  • .net 微信网站开发免费网站建设制作
  • 做网站需要啥备案之类的嘛传统的网站开发模式
  • 杭州网站seo优化最适合女生的专业排名
  • 广州市酒店网站设计交易平台网站怎么做
  • 江苏省示范校建设专题网站网站网页制作公司网站
  • 前海艾爻网站 建设磐安住房和城乡建设部网站
  • 网站程序h5电商seo是什么意思啊
  • 网站赚钱做跨境电商要什么费用
  • wordpress修改文件简单的seo网站优化排名
  • 专业网专业网站建设展示网站建设的ppt
  • 江淮网站开发商城网站 html模板
  • 上海网站制作电话淄博免费网站建设
  • 做动态在网站需要学什么宁波网站建设用什么软件
  • 靖江 建设局网站wordpress小工具缓存
  • 搜索网站的软件郑州企业展厅设计公司
  • 上海建设局官方网站做外包网站的公司是怎样的
  • 网站开发ppt方案模板wordpress如何导出数据字典
  • 网站加上视频对seo影响wordpress打开xml-rpc
  • 个人网站建设分几个步走单页面网站多少钱
  • 自己做网站详细步骤保定网站建设方案优化
  • 传奇手游网站大全9377公司网站建设安全的风险