Python列表格式

时间:2013-07-25 20:16:30

标签: python list python-2.7

我有一个列表,我从一个看起来像这样的文件中读到:

D0 DA D7 00 D0 DA D7 00 
D0 DA D7 00 F0 DA D7 00 
F0 DA D7 00 D0 DA D7 00 
D0 DA D7 00 D2 DA 8E 00 
D2 DA 9D 00 D2 DA D9 00 
D2 DA AC 00 D2 DA E8 00 
D2 DA F7 00 D2 DA 06 00 
D2 DA 15 00 D2 DA 24 00 
D2 DA 33 00 D2 DA 42 00 
D2 DA 51 00 D2 DA 60 00 
D2 DA 6F 00 D2 DA CA 00 
D2 DA 7E 00 D2 DA BB 00 
D0 DA D7 FF FF FF FF FF 

我正在创建另一个列表,通过读取一些看起来像这样的硬件:

 D0
 DA
 D7
 00
 DA
 .....

我想格式化这个列表我正在阅读一个看起来像上面的那个。我不想创建两个列表,我将其读入一个然后格式化并写入另一个列表。是否有一些语法可用于以第一个列表的格式自动将值读入第二个列表?

for ii in xrange(0xC000,0xFFFF,2):  
    rv2.write('m75421_2', regname, ii)
    time.sleep(0.001)
    mem_value = rv2.read('m75421_2',ii)
    list2.append(mem_value) ----some syntax that I can add to this append here

谢谢!

2 个答案:

答案 0 :(得分:0)

如果你的问题是如何格式化,你可以这样做:

>>> data=['D0', 'DA', 'D7', '00', 'D0', 'DA', 'D7', '00', 'D0', 'DA', 'D7', '00', 'F0', 'DA', 'D7', '00', 'F0', 'DA', 'D7', '00', 'D0', 'DA', 'D7', '00', 'D0', 'DA', 'D7', '00', 'D2', 'DA', '8E', '00', 'D2', 'DA', '9D', '00', 'D2', 'DA', 'D9', '00', 'D2', 'DA', 'AC', '00', 'D2', 'DA', 'E8', '00', 'D2', 'DA', 'F7', '00', 'D2', 'DA', '06', '00', 'D2', 'DA', '15', '00', 'D2', 'DA', '24', '00', 'D2', 'DA', '33', '00', 'D2', 'DA', '42', '00', 'D2', 'DA', '51', '00', 'D2', 'DA', '60', '00', 'D2', 'DA', '6F', '00', 'D2', 'DA', 'CA', '00', 'D2', 'DA', '7E', '00', 'D2', 'DA', 'BB', '00', 'D0', 'DA', 'D7', 'FF', 'FF', 'FF', 'FF', 'FF']
>>> cols=8
>>> print '\n'.join(' '.join(data[i:i+cols]) for i in range(0,len(data),cols))
D0 DA D7 00 D0 DA D7 00
D0 DA D7 00 F0 DA D7 00
F0 DA D7 00 D0 DA D7 00
D0 DA D7 00 D2 DA 8E 00
D2 DA 9D 00 D2 DA D9 00
D2 DA AC 00 D2 DA E8 00
D2 DA F7 00 D2 DA 06 00
D2 DA 15 00 D2 DA 24 00
D2 DA 33 00 D2 DA 42 00
D2 DA 51 00 D2 DA 60 00
D2 DA 6F 00 D2 DA CA 00
D2 DA 7E 00 D2 DA BB 00
D0 DA D7 FF FF FF FF FF

答案 1 :(得分:0)

我假设读取的是整数。

from itertools import izip_longest

def grouper(iterable, n, fillvalue=None):
    '''group into sub-sequences of size n'''
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

def values(lo, hi, rv2, regname):
    '''yield memory values from lo to hi'''
    for ii in xrange(lo, hi, 2):  
        rv2.write('m75421_2', regname, ii)
        time.sleep(0.001)
        yield rv2.read('m75421_2', ii)

def fmt(line):
    '''format a line of integers as 2 digit hex with spaces'''
    return ' '.join(['%02x'] * len(line)) % line

map(fmt, grouper(values(0xC000, 0xFFFF, rv2, regname), 8, 0))
来自http://docs.python.org/2/library/itertools.html#recipes

的石斑鱼

如果读取返回十六进制字符串:

def fmt(line):
    '''format a line of 2 digit hex strings'''
    return ' '.join(map(lambda s: s.strip(), line))

map(fmt, grouper(values(0xC000, 0xFFFF, rv2, regname), 8, '--'))