我有一组名为这样的文件:
qd-p64-dZP-d64-z8-8nn.q
qd-p8-dPZ-d8-z1-1nn.q qq-p8-dZP-d8-z1-2nn.q
qd-p8-dPZ-d8-z1-2nn.q qq-p8-dZP-d8-z1-4nn.q
qd-p8-dPZ-d8-z1-4nn.q qq-p8-dZP-d8-z16-1nn.q
qd-p8-dPZ-d8-z16-1nn.q qq-p8-dZP-d8-z16-2nn.q
qd-p8-dPZ-d8-z16-2nn.q qq-p8-dZP-d8-z16-4nn.q
qd-p8-dPZ-d8-z16-4nn.q qq-p8-dZP-d8-z16-8nn.q
qd-p8-dPZ-d8-z16-8nn.q qq-p8-dZP-d8-z1-8nn.q
qd-p8-dPZ-d8-z1-8nn.q qq-p8-dZP-d8-z2-1nn.q
qd-p8-dPZ-d8-z2-1nn.q qq-p8-dZP-d8-z2-2nn.q
qd-p8-dPZ-d8-z2-2nn.q qq-p8-dZP-d8-z2-4nn.q
qd-p8-dPZ-d8-z2-4nn.q qq-p8-dZP-d8-z2-8nn.q
qd-p8-dPZ-d8-z2-8nn.q qq-p8-dZP-d8-z32-1nn.q
qd-p8-dPZ-d8-z32-1nn.q qq-p8-dZP-d8-z32-2nn.q
qd-p8-dPZ-d8-z32-2nn.q qq-p8-dZP-d8-z32-4nn.q
qd-p8-dPZ-d8-z32-4nn.q qq-p8-dZP-d8-z32-8nn.q
qd-p8-dPZ-d8-z32-8nn.q qq-p8-dZP-d8-z4-1nn.q
qd-p8-dPZ-d8-z4-1nn.q qq-p8-dZP-d8-z4-2nn.q
qd-p8-dPZ-d8-z4-2nn.q qq-p8-dZP-d8-z4-4nn.q
要迭代的信息在文件名中给出,例如:
修复
dZP, 1nn, z2,
并改变
d
带值
{d8, d16, d32 d64}
然后,增加z值以获得
dZP, 1nn, z4
再次改变
{d8, d16, d32 d64}
一旦我能够像这样迭代,我需要从文件中进行一些信息处理。
答案 0 :(得分:1)
对于发电机来说,这看起来不错。我刚刚为d,z和n做过,但它应该很容易推广到你的所有文件名字段:
...
<script>
$.get( "https://blockchain.info/q/totalbc", function(response) {
var VALUE = +response;
// If not NaN, get mathy!
if(!isNaN(VALUE))
{
VALUE /= 100000000;
}
else
{
VALUE = "Uh oh... Cannot Math with " + response;
}
$("#BTCUSD").text(VALUE);
}, "json" );
</script>
...
答案 1 :(得分:0)
你可以像以下那样。它可能不是完全你想要的东西,因为你已经从你的问题中留下了一些重要的细节,但是我试图以一种让你轻松的方式编写它根据你的真实需要改变。
简而言之,它的作用是使用re
模块将每个文件名分解为&#34;字段&#34;使用每个中找到的数值。这些值被赋予相应的名称作为临时字典,然后用于创建具有所需字段优先级的namedtuple
个值。文件名的其他部分将被忽略。
可以使用os.listdir()
或glob.glob()
从文件系统中获取初始文件名列表。
from collections import namedtuple
import re
filenames = ['qd-p64-dZP-d64-z8-8nn.q', 'qd-p8-dPZ-d8-z1-1nn.q',
'qd-p8-dPZ-d8-z1-2nn.q', 'qd-p8-dPZ-d8-z1-4nn.q',
'qd-p8-dPZ-d8-z16-1nn.q', 'qd-p8-dPZ-d8-z16-2nn.q',
'qd-p8-dPZ-d8-z16-4nn.q', 'qd-p8-dPZ-d8-z16-8nn.q',
'qd-p8-dPZ-d8-z1-8nn.q', 'qd-p8-dPZ-d8-z2-1nn.q',
'qd-p8-dPZ-d8-z2-2nn.q', 'qd-p8-dPZ-d8-z2-4nn.q',
'qd-p8-dPZ-d8-z2-8nn.q', 'qd-p8-dPZ-d8-z32-1nn.q',
'qd-p8-dPZ-d8-z32-2nn.q', 'qd-p8-dPZ-d8-z32-4nn.q',
'qd-p8-dPZ-d8-z32-8nn.q', 'qd-p8-dPZ-d8-z4-1nn.q',
'qd-p8-dPZ-d8-z4-2nn.q', 'qq-p8-dZP-d8-z1-2nn.q',
'qq-p8-dZP-d8-z1-4nn.q', 'qq-p8-dZP-d8-z16-1nn.q',
'qq-p8-dZP-d8-z16-2nn.q', 'qq-p8-dZP-d8-z16-4nn.q',
'qq-p8-dZP-d8-z16-8nn.q', 'qq-p8-dZP-d8-z1-8nn.q',
'qq-p8-dZP-d8-z2-1nn.q', 'qq-p8-dZP-d8-z2-2nn.q',
'qq-p8-dZP-d8-z2-4nn.q', 'qq-p8-dZP-d8-z2-8nn.q',
'qq-p8-dZP-d8-z32-1nn.q', 'qq-p8-dZP-d8-z32-2nn.q',
'qq-p8-dZP-d8-z32-4nn.q', 'qq-p8-dZP-d8-z32-8nn.q',
'qq-p8-dZP-d8-z4-1nn.q', 'qq-p8-dZP-d8-z4-2nn.q',
'qq-p8-dZP-d8-z4-4nn.q']
filename_order = ('p', 'd', 'z', 'nn') # order fields occur in the filenames
fieldname_order = ('z', 'd', 'p', 'nn') # desired field sort order
OrderedTuple = namedtuple('OrderedTuple', fieldname_order)
def keyfunc(filename):
values = [int(value) for value in re.findall(r'-\D*(\d+)', filename)]
parts = dict(zip(filename_order, values))
return OrderedTuple(**parts)
filenames.sort(key=keyfunc) # sort filename list in-place
列表中文件名的结果顺序:
['qd-p8-dPZ-d8-z1-1nn.q', 'qd-p8-dPZ-d8-z1-2nn.q', 'qq-p8-dZP-d8-z1-2nn.q',
'qd-p8-dPZ-d8-z1-4nn.q', 'qq-p8-dZP-d8-z1-4nn.q', 'qd-p8-dPZ-d8-z1-8nn.q',
'qq-p8-dZP-d8-z1-8nn.q', 'qd-p8-dPZ-d8-z2-1nn.q', 'qq-p8-dZP-d8-z2-1nn.q',
'qd-p8-dPZ-d8-z2-2nn.q', 'qq-p8-dZP-d8-z2-2nn.q', 'qd-p8-dPZ-d8-z2-4nn.q',
'qq-p8-dZP-d8-z2-4nn.q', 'qd-p8-dPZ-d8-z2-8nn.q', 'qq-p8-dZP-d8-z2-8nn.q',
'qd-p8-dPZ-d8-z4-1nn.q', 'qq-p8-dZP-d8-z4-1nn.q', 'qd-p8-dPZ-d8-z4-2nn.q',
'qq-p8-dZP-d8-z4-2nn.q', 'qq-p8-dZP-d8-z4-4nn.q',
'qd-p64-dZP-d64-z8-8nn.q', 'qd-p8-dPZ-d8-z16-1nn.q',
'qq-p8-dZP-d8-z16-1nn.q', 'qd-p8-dPZ-d8-z16-2nn.q',
'qq-p8-dZP-d8-z16-2nn.q', 'qd-p8-dPZ-d8-z16-4nn.q',
'qq-p8-dZP-d8-z16-4nn.q', 'qd-p8-dPZ-d8-z16-8nn.q',
'qq-p8-dZP-d8-z16-8nn.q', 'qd-p8-dPZ-d8-z32-1nn.q',
'qq-p8-dZP-d8-z32-1nn.q', 'qd-p8-dPZ-d8-z32-2nn.q',
'qq-p8-dZP-d8-z32-2nn.q', 'qd-p8-dPZ-d8-z32-4nn.q',
'qq-p8-dZP-d8-z32-4nn.q', 'qd-p8-dPZ-d8-z32-8nn.q',
'qq-p8-dZP-d8-z32-8nn.q']