我是python的新手并尝试从Linux系统读取/ sys / devices / system / cpu / cpuX / cpufreq / vdd_levels并将其放入字典中。但是我如何摆脱所有的换行符,空格和冒号?
返回的数据看起来像这样(第一个数字是唯一的):
1: 11111
2: 22222
3: 33333
我已经尝试过各种我能想到的方式,但它总是以意大利面条结束。
答案 0 :(得分:3)
这会将您的数据放入字符串s
并将其放入字典d
。
s = '1: 11111\n2: 22222\n3: 33333'
d = dict([line.split(': ') for line in s.splitlines()])
答案 1 :(得分:0)
类似的东西:
s = '1: 11111\n2: 22222\n3: 33333'
d = {}
for e in s.split( '\n' ):
k, v = e.split( ': ' )
d[ k ] = v
print d
答案 2 :(得分:0)
这个怎么样:
import re
vdd_level_re = re.compile(r'(\d+)\:\s*(\d+)')
vdd_levels = {}
with open('/sys/devices/system/cpu/cpuX/cpufreq/vdd_levels') as vdd_level_file:
for vdd_level in vdd_level_file:
level = vdd_level_re.match(vdd_level)
if level:
k,v = level.group(1,2)
vdd_levels[k] = v
else:
print "line did not match expected format"
print vdd_level
这会将k和v保存为字符串。如果要将v转换为整数,请将最后一行更改为:
vdd_levels[k] = int(v)