Как очистить данные из файла и получить их в словаре? - PullRequest
0 голосов
/ 21 декабря 2011

Я новичок в python и пытаюсь прочитать / sys / devices / system / cpu / cpuX / cpufreq / vdd_levels из системы Linux и перенести его в словарь. Но как мне избавиться от всех новых строк, пробелов и двоеточий?

Возвращенные данные выглядят примерно так (первое число уникально):

1: 11111
2: 22222
3: 33333

Я старался всеми возможными способами, но это всегда заканчивалось спагетти.

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Это берет ваши данные в строку s и помещает их в словарь, d.

s = '1: 11111\n2: 22222\n3: 33333'    
d = dict([line.split(': ') for line in s.splitlines()])
0 голосов
/ 21 декабря 2011

Как насчет этого:

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)
0 голосов
/ 21 декабря 2011

Что-то вроде:

s = '1: 11111\n2: 22222\n3: 33333'
d = {}
for e in s.split( '\n' ):
    k, v = e.split( ': ' )
    d[ k ] = v
print d
...