我有一个列表,我从一个看起来像这样的文件中读到:
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
谢谢!
答案 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, '--'))