Python 寻找总成本
我正在尝试一个商店计划,需要能够打印出一个用户想要什么详细的收据,然后打印一个总成本Python 寻找总成本,python,csv,writing,Python,Csv,Writing,我正在尝试一个商店计划,需要能够打印出一个用户想要什么详细的收据,然后打印一个总成本 用户输入8位条形码 假设它是有效的条形码类型,程序将在csv文件中搜索它,其中包含产品、代码和价格列表。看起来像这样。(在excel中打开时,每条记录位于不同的列中) 34512340普通支架0.5 12395675黄色卷笔刀2 56756777 100mm螺栓0.2 90673412 L形支架1.2 12568673办公桌整洁3 22593672回收箱5 65593691 500层压板4.5 9859321
- 34512340普通支架0.5
- 12395675黄色卷笔刀2
- 56756777 100mm螺栓0.2
- 90673412 L形支架1.2
- 12568673办公桌整洁3
- 22593672回收箱5
- 65593691 500层压板4.5
- 98593217 200便签2.5
- 98693214蓝色卷笔刀2.1
- 98693399 500张价值纸5
- 11813651执行主席65
- 98456390纸盘6
- 98555567孔冲头3
- 98555550文件柜45
- 98553655订书机2
- 96553657钻孔15
- 91823656 Pritt斗杆2
- 99823658 Sellotape 2
def checkfile(code):
found = None
with open('products.csv', newline='') as f:
reader = csv.reader(f, delimiter='\t')
for line in f:
data = line.split(",")
if code == data[0]:
print("We found your product ",data)
return data
data = code, "is not found. Please try again"
print (data)
有什么想法吗?我想这里有两个问题。
1-您正在将文件传递给
csv.reader
,但只需使用f
即可2-您正在使用
\t
告诉csv.reader
文件由制表符分隔,但稍后用逗号分隔
def checkfile(code):
found = None # This seems redundant?
with open('products.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for line in reader:
print(line) # To see what you're getting
if code == line[0]:
print("We found your product ", code)
return line
'''
EDIT: Outside of the question, but the below probably doesn't do what you expect
data = code, "is not found. Please try again"
print (data)
'''
# Use this instead
print(code, "is not found. Please try again")
从您的要点(由空格分隔),在现有的csv.reader中使用\t
,然后尝试基于逗号拆分,很难知道您需要什么。因此,您可能还必须尝试这些方法才能获得有效的结果:
reader = csv.reader(f, delimiter='\t')
reader = csv.reader(f, delimiter=' ')
我认为这里有两个问题。
1-您正在将文件传递给
csv.reader
,但只需使用f
即可2-您正在使用
\t
告诉csv.reader
文件由制表符分隔,但稍后用逗号分隔
def checkfile(code):
found = None # This seems redundant?
with open('products.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for line in reader:
print(line) # To see what you're getting
if code == line[0]:
print("We found your product ", code)
return line
'''
EDIT: Outside of the question, but the below probably doesn't do what you expect
data = code, "is not found. Please try again"
print (data)
'''
# Use this instead
print(code, "is not found. Please try again")
从您的要点(由空格分隔),在现有的csv.reader中使用\t
,然后尝试基于逗号拆分,很难知道您需要什么。因此,您可能还必须尝试这些方法才能获得有效的结果:
reader = csv.reader(f, delimiter='\t')
reader = csv.reader(f, delimiter=' ')
您应该确保您的代码正确缩进您必须阅读每份收据的CSV吗?你不能只加载一次,然后将“条形码”设置为字典中的一个键,并将项目和价格作为该键的值吗?我不清楚为什么你将分隔符指定为tab,然后必须用逗号分割CSV中的每一行。我从来没见过这个。既然我认为您的问题是如何拆分行上的项目,那么您是否尝试过
reader=csv.reader(f,delimiter=',')
然后删除data=line.split(“,”)
?您是否可以包含一个测试csv文件??我认为,如果我们能看到它的实际样子,大部分的困惑都可以解决。我建议您查看pandas,将csv读入数据框,然后查询条形码的行值。您可以使用类似以下结构:{barcode:[名称、价格、数量],…}以便轻松访问:foo[barcode]易于填充,同时解析文件:foo[data[0]]=[数据[1],[数据[2],您的计算值]易于计算的总成本foo[条形码][1]*foo[条形码][2]你应该确保你的代码正确缩进你必须在每张收据上阅读CSV?你不能只加载一次,然后将“条形码”设置为字典中的一个键,将项目和价格作为该键的值吗?我不清楚为什么你将分隔符指定为制表符,但无论如何都必须用逗号分割CSV中的每一行。我有从未见过这种情况。因为我认为您的问题是如何拆分行上的项目,所以您是否尝试过reader=csv.reader(f,delimiter=',')
,然后删除data=line.split(“,”)
?您能提供一个测试csv文件吗?我想如果我们能看到它的实际外观,大部分混乱都可以解决。我建议您查看熊猫,只需将csv读入数据框,然后查询条形码的行值。您可以使用类似以下结构:{条形码:[名称、价格、数量],…}因此很容易访问:foo[barcode]很容易填充,而您在解析文件时:foo[data[0]]]=[data[1],[data[2],您的计算值]很容易计算总成本foo[barcode][1]*foo[barcode][2]