首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表格式

Python列表格式
EN

Stack Overflow用户
提问于 2013-07-26 04:16:30
回答 2查看 116关注 0票数 0

我从一个文件中读取了一个列表,如下所示:

代码语言:javascript
复制
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 

我正在通过对一些硬件的读取创建另一个列表,如下所示:

代码语言:javascript
复制
 D0
 DA
 D7
 00
 DA
 .....

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

代码语言:javascript
复制
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

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-07-26 04:47:03

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

代码语言:javascript
复制
>>> 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
票数 0
EN

Stack Overflow用户

发布于 2013-07-26 09:29:55

我假设读操作返回的是整数。

代码语言:javascript
复制
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的grouper

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

代码语言:javascript
复制
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, '--'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17867931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档