我假设你有一个输入文件名为input_file
这样的:
GTIN PRODUCT PP CSL TSL RSL
12345670 cupcakes 1.50 50 50 25
98765432 cakes 1.00 50 50 25
12121212 toffees 0.50 50 50 25
09090909 cement 1.00 50 50 25
56565656 phones 3.00 50 50 25
12321323 craters 2.00 50 50 25
的第一件事,我想到是来包装你INPUT_FILE成字典。
所以,这里是我的回答你的问题:
def format_input(input_file = ""):
data, id_dict = {}, 1
aa = list(j for i in tuple(open(input_file, 'r')) for j in i.split(" ") if j != "")
for i in range (6, len(aa), 6): # range from the 6th pisition with step = 6
if i + 5 <= len(aa):
data[id_dict] = {
aa[0]: aa[i],
aa[1]: aa[i+1],
aa[2]: aa[i+2],
aa[3]: aa[i+3],
aa[4]: aa[i+4],
aa[5].replace("\n", ""): aa[i+5].replace("\n", "")
}
id_dict +=1
else:
break # If something goes wrong
return data
输出:
print(format_input("input_file"))
{
1:
{
'PP': '1.50',
'RSL': '25',
'PRODUCT': 'cupcakes',
'TSL': '50',
'CSL': '50',
'GTIN': '12345670'
},
2:
{
'PP': '1.00',
'RSL': '25',
'PRODUCT': 'cakes',
'TSL': '50',
'CSL': '50',
'GTIN': '98765432'
},
3:
{
'PP': '0.50',
'RSL': '25',
'PRODUCT': 'toffees',
'TSL': '50',
'CSL': '50',
'GTIN': '12121212'
},
4:
{
'PP': '1.00',
'RSL': '25',
'PRODUCT': 'cement',
'TSL': '50',
'CSL': '50',
'GTIN': '09090909'
},
5:
{
'PP': '3.00',
'RSL': '25',
'PRODUCT': 'phones',
'TSL': '50',
'CSL': '50',
'GTIN': '56565656'
},
6:
{
'PP': '2.00',
'RSL': '25',
'PRODUCT': 'craters',
'TSL': '50',
'CSL': '50',
'GTIN': '12321323'
}
}
现在,如果你想访问你的数据,你可以这样做这个例子:
data = format_input("input_file")
for i in data:
print("GTIN: {0} | PRODUCT: {1} | PP: {2} | CSL: {3} | TSL: {4} | RSL: {5}".format(
data[i]["GTIN"], data[i]["PRODUCT"], data[i]["PP"], data[i]["CSL"], data[i]["TSL"], data[i]["RSL"]))
输出:
GTIN: 12345670 | PRODUCT: cupcakes | PP: 1.50 | CSL: 50 | TSL: 50 | RSL: 25
GTIN: 98765432 | PRODUCT: cakes | PP: 1.00 | CSL: 50 | TSL: 50 | RSL: 25
GTIN: 12121212 | PRODUCT: toffees | PP: 0.50 | CSL: 50 | TSL: 50 | RSL: 25
GTIN: 09090909 | PRODUCT: cement | PP: 1.00 | CSL: 50 | TSL: 50 | RSL: 25
GTIN: 56565656 | PRODUCT: phones | PP: 3.00 | CSL: 50 | TSL: 50 | RSL: 25
GTIN: 12321323 | PRODUCT: craters | PP: 2.00 | CSL: 50 | TSL: 50 | RSL: 25
PS:很抱歉的长期答案。也许我的回答不是最好的,但它可以帮助你。
'print()'不会返回任何内容。所以你变量'reciept'将等于'nul'值。 –