我假設你有一個輸入文件名爲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'值。 –