[英]Parsing text file and storing it in a list
我有一个Discount.txt文件,其中包含以下格式的数据:
Less than $100 --> 0%
From $100 up to less than $500 --> 10%
From $500 up to less than $1,000 --> $40 PLUS 20%
From $1,000 up to less than $2,000 --> $140 PLUS 30%
$2,000 and above --> $440 PLUS 40%
这意味着销售金额折扣
Less than $100 0%
From $100 up to less than $500 10% for each dollar over $100
From $500 up to less than $1,000 $40 PLUS 20% of the total sale amount over $500
From $1,000 up to less than $2,000 $140 PLUS 30% of the total sale amount over $1,000
$2,000 and above $440 PLUS 40% of the total sale amount over $2,000
也就是说,如果总销售金额为$ 100,则折扣为$ 0。 但是,如果总销售金额为$ 101,则折扣为$ 0.10。 如果总销售额为$ 500,则折扣为$ 40,但如果总销售额为$ 501,则折扣为$ 40.20。
因此,为了解决这个问题,我认为应该有4个列表:1个用于存储销售额下限的列表,一个用于存储上限的列表,一个用于存储与范围相对应的固定增量的列表,以及一个用于存储附加折扣的列表。 如果没有固定的增量,则假定为零。
然后,对于给定的销售额,如果它处于ith范围内,则只需执行以下操作:
fixedIncrement[i] + (saleAmount-lowerLimit[i])*additionDiscount[i]
但是面临的问题是解析给定的文本文件。 有人可以帮助解析它并将其存储在python列表中吗
在给定的文件中,列表如下所示:
lowerLimit[] = [1,100,500,1000,2000]
upperLimit[] = [100,500,1000,2000,MAX]
fixedIncrement[] = [0,0,40,140,440]
additionDiscount[] = [0,0.1,0.2,0.3,0.4]
要打开.txt:
with open ("data.txt", "r") as myfile:
data=myfile.readlines()
每行应该是列表中的字符串,例如['string one',string two']将每个字符串转换为字符串列表
all_lines = [i.split() for i in data]
>>> all_lines = [['string', 'one'], ['string', 'two']]
for l in all_lines:
# Go through each line
从100美元到少于500美元-> 10%转换为:
l = ['From', '$100', 'up', 'to', 'less', 'than', '$500', '-->', '10%']
现在,您应该可以使用逻辑来解析它了。 例如,使范围参数超出此行:
all_ranges = []
r1 = [i for i in l if "$" in i]
if l[0] == 'From': # Contains a range
r = (int(r1[0][1:]), int(r1[1][1:]))
all_ranges.append(r)
print all_ranges
>>> [(100, 500)]
编辑:
elif l[0] == "Less": # No range in this line
r = (0, int(r1[0][1:])) # Range is from 0 to $100
all_ranges.append(r)
else:
top = l[0][1:]
all_ranges.append((top, 1000000)) # High range
>>>> [(100, 500), (0, 100), (2000, 1000000)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.