我有一组提取并存储到数组中的字符串。其中一些包含我要提取的变量,问题是目前这些是字符串。因此,例如,一个字符串看起来像
s1 = 'DataFile=scan1.dat'
其他人看起来像
s2 = 'NumberOfChannels=32'
我想要做的是取s1和s2并从它们中提取信息,并将其存储为:
DataFile='scan1.dat'
NumberOfChannels=32
字符串看起来都与上面的相似。它可以是一个包含字符串本身的变量,也可以是一个包含整数的变量。这是我在整数情况下的尝试(失败):
# ll is a string element of the big array
if ll.startswith('NumberOfChannels'):
print "found nChans"
idx = ll.index('=')
vars()[ll[:idx-1]] = int(ll[idx+1:])
任何建议/外部模块可以帮助我,将不胜感激
def convert(val):
"""
Attempt to coerce type of val in following order: int, float, str
"""
for type in (int, float, str):
try:
return type(val)
except ValueError:
pass
return val
def make_config(*args, **kwargs):
for arg in args:
try:
key,val = arg.split('=')
kwargs[key.strip()] = convert(val.strip())
except ValueError: # .split() didn't return two items
pass
return kwargs
s1 = 'DataFile=scan1.dat'
s2 = 'NumberOfChannels=32'
config = make_config(s1, s2)
这给你
{'DataFile': 'scan1.dat', 'NumberOfChannels': 32}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句