Python 板


LINE

※ 引述《neurone (明月照大江)》之铭言: : input = : {{ ITEM_I, : 3, : { 0x01, 0x02,0x03}}, : { ITEM_II, : 3, : { 0x11, 0x12,0x13}}, : }; : output = [ ["ITEM_I","3","0x01,0x02,0x03"],[ITEM_II, "3", "0x01,0x02,0x03"]] 原文恕删,这有另一种解法是实作一个简单的 Lexer, 但以下的解法比较简单,其实就是用 regex 硬解,提供您作参考。 如果 pattern 比您举的更复杂,可能用 Lexer 来处理反而会比较容易 可以搜寻 Lexer, Token, python re 等关键字 # parser.py import re txt = open('raw.h').read() # parse the variable assignment # e.g., var = { ... } var_name, var_value = re.search( '(\w+)\s*=\s*\{(.*)\};', # regex pattern txt, # input string re.DOTALL # '.' also matches '\n' ).groups() # a tuple with matched string in each (...) pattern def clean(item): '''trim spaces between comma for 3rd entry of item''' cleaned = list(item) # convert from tuple to mutable list cleaned[-1] = ','.join(entry.strip() for entry in cleaned[-1].split(',')) return cleaned # parse the item array # e.g., { ITEM_XXX, 000m, { ... }}, # then clean the { ... } part, no space between comma l = [clean(item) for item in re.findall('\{\s*(\w+),\s*(\d+),\s*\{([^}]*)\}\},', var_value)] print(var_name, "=", l) ## 执行结果,把「input ...」那段文字存入 raw.h 中 In [1]: %run parser.py input = [['ITEM_I', '3', '0x01,0x02,0x03'], ['ITEM_II', '3', '0x11,0x12,0x13']] -- --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.117.109 修增注解 ※ 编辑: ccwang002 来自: 61.230.117.109 (08/16 01:24)
1F:推 neurone:请问若array内的element 长度不一样 可以这样做吗? 08/16 11:37
2F:→ neurone:我先试试看好了,感谢! 08/16 11:38
如果是有不同多组的 ITEM_xx array 这个程式不需要更动,ex 现在2组 -> 3, 4, ... ※ 编辑: ccwang002 来自: 61.230.162.248 (08/17 00:03)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP