【发布时间】:2015-05-22 09:43:54
【问题描述】:
我想将三个关键字 %vel、%note、%blah 从字符串解析为整数:
s = "%vel=127, %note=64, %blah=13"
# should give { 'vel': 127, 'note': 64, 'blah': 13}
# or vel = 127 // note = 64 // blah = 13
或
s = "%blah=5,%note=44"
# should give { 'blah': 5, 'note': 44}
我做过类似的事情:
s = "%vel=127, %note=64, %blah=13"
d = dict()
for k in s.split(','):
k = k.strip()
if "%vel" in k: d['vel'] = int(k.split("%vel=")[1])
if "%note" in k: d['note'] = int(k.split("%note=")[1])
if "%blah" in k: d['blah'] = int(k.split("%blah=")[1])
print d
它有效,但我觉得它很丑。
如何以更好/pythonic 的方式做到这一点?
【问题讨论】:
-
使用正则表达式组
-
我已将此标记为“更好”是基于意见的。让您的问题更具体。
-
@HiteshDharamdasani:你有例子吗?它会比当前代码更短吗?
-
您正在寻找的是“如何摆脱那些
ifs 和“魔法”字符串?” -
@khajvah 你是对的:我的意思是我正在寻找一种对边缘情况更健壮的解决方案,寻找更自然的东西来完成这些工作,例如内置模块这可能吗?