我需要对一个字符串做一个反向的.format(),比如
a = "01AA12345AB12345AABBCCDDEE".reverseformat({id:2d}{type:2s}{a:3d}{b:4s}{c:5d}{d:2s})
print a
>>>> {'id':1, 'type':'aa', 'a':'123', 'b':'45AB', 'c':'12345', 'd':'AA'}
我发现thislib几乎满足了我的需要,问题是它给了我这个结果
msg = parse.parse("{id:2d}{type:3S}{n:5S}", "01D1dddffffffff")
print msg.named
>>>>{'type': 'D1dddfffffff', 'id': 1, 'n': 'f'}
而不是
{'id':1, 'type':'D1d', 'n':'ddfffff'}
是否存在另一个可以将字符串“解包”到dict的lib/method/wathever?你知道吗
编辑:为了澄清,我已经尝试了字符串的w和D格式规范
如果你的格式总是一样的,你有什么理由不能像普通的字符串一样分割它吗?你知道吗
它将id、类型和n表示为:
如果你需要的话,把它转换成字典是很简单的。如果您的解析不需要是动态的(在当前状态下似乎不是来自您的问题),那么将切片封装到一个函数中就足够容易了,该函数将提取所有的值。你知道吗
这还有一个优点,即从切片中可以清楚地看到要提取的字符串中有多少个字符和位置,但在解析格式化程序中,这些位置都是相对的(即,找到
n
提取的字符意味着计算id
和type
消耗的字符数)。你知道吗你可以用正则表达式来做你想做的事情。你知道吗
你甚至可以做一个这样的函数。你知道吗
然后打电话。。。你知道吗
不过,我希望你能看到这是多么令人难以置信的丑陋。不要这样做,只是使用字符串切片。你知道吗
相关问题 更多 >
编程相关推荐