我有一个脚本将销售值写入文件中的单独行,最终目标是将数据保存到数据库中。我遇到的问题是,同一销售人员,日期,产品,价格和数量都有重复的条目。
我的代码就像这样写到文件中:
John 07-15-2016 Tool Belt $100 2
Sara 07-15-2016 Hammer $100 3
John 07-15-2016 Tool Belt $100 2
John 07-15-2016 Tool Belt $100 2
Sara 07-15-2016 Hammer $100 3
如何删除重复项并将它们一起添加?即输出为:
John 07-15-2016 Tool Belt $100 6
Sara 07-15-2016 Hammer $100 6
我已经使用了计数器但它没有捕获多个实例,我也找不到将两者加在一起的方法。
任何帮助都将不胜感激。
脚本:
for line in s:
var = re.compile(r'(\$)',re.M)
line = re.sub(var, "", line)
var = re.compile(r'(\,)',re.M)
line = re.sub(var, "", line)
line = line.rstrip('\n')
line = line.split("|")
if line[0] != '':
salesperson = str(salesperson)
date = dt.now()
t = line[0].split()
print t
t = str(t[0])
try:
s = dt.strptime(t, "%H:%M:%S")
except:
s = dt.strptime(t, "%H:%M")
s = s.time()
date = dt.combine(date, s)
date = str(date)
price = line[1]
quantity = line[2]
fn.write("%s %s %s %s \n" % (salesperson, date, price, quantity))
fn.close()
答案 0 :(得分:0)
假设您的文件名为records.txt
将文件拆分为每个销售人员的单独文件:
awk '{print > $1}' records.txt
然后计算每个销售人员的具体项目:
cat Sara | grep 'Hammer' | awk '{print $NF,sum}' | awk '{s+=$1} END {print s}'
答案 1 :(得分:0)
sample.csv
John 07-15-2016 Tool Belt $100 2
Sara 07-15-2016 Hammer $100 3
John 07-15-2016 Tool Belt $100 2
John 07-15-2016 Tool Belt $100 2
Sara 07-15-2016 Hammer $100 3
test.py
with open("sample.csv") as inputs:
mydict = dict()
for line in inputs:
elements = line.strip().split()
key = " ".join(elements[0: len(elements) - 1])
mydict[key] = mydict.get(key, 0) + int(elements[-1])
# iterate the dictionary and print out result
for key, value in mydict.iteritems():
print "{0} {1}".format(key, value)
我使用字典,拆分每一行并使用第一个len(elements) - 1
元素作为键,然后在迭代所有行时增加最后一个元素。
mydict.get(key, 0)
返回值,否则返回值0
结果: python2.7 test.py
Sara 07-15-2016 Hammer $100 6
John 07-15-2016 Tool Belt $100 6
因此,在您的情况下,您需要:
elements = line.strip().split()
key = " ".join(elements[0: len(elements) - 1])
mydict[key] = mydict.get(key, 0) + int(elements[-1])