假设这是在我的 CSV 文件中
Apple 10
Banana 14
Orange 23
Watermelon 54
比方说,这是商店上周供应的水果。
所以这周,我得到了 12 个苹果,如果我的水果数量比上周大,我想用 12 代替 10。这是我到目前为止的代码,它将数据放入 csv 文件中.
def fruit():
FruitT = input("Please type in the name of the fruit: ")
FruitN = input("Please type in the amount of the fruit: ")
f = open('fruitstcok.csv', 'a')
f.write(FruitT.title()+','+str(FruitN)+'\n')
f.close()
print ("Success")
fruit()
fruit()
如何才能做到,当我输入水果名称及其数量时,它会检查数量是否更大,如果是,则进行替换,如果不是,则不执行任何操作?
另外,我想知道如何将金额添加到 csv 中,如下所示。
Apple 10,12
所以在本月晚些时候,我可以通过将所有水果相加并除以列表中的数字数量来找出该月水果的平均数量。我可以使用 len 对吗?
我当然会创建两个 csv 文件。到目前为止,我知道如何读取 csv 文件并打印它们。
最佳答案
使用泡菜:
import pickle
def fruit():
try:
with open('fruits.pickle', 'rb') as f:
items = pickle.load(f)
except (ValueError,IOError) as e:
print(e)
items = {'Banana': {'mon': [14], 'count': 14}, 'Apple': {'mon': [10], 'count': 10}, 'Orange': {'mon': [23], 'count': 23}, 'Watermelon': {'mon': [54], 'count': 54}}
fruit_t = input("Please type in the name of the fruit: ")
fruit_n = int(input("Please type in the amount of the fruit: "))
if fruit_t in items:
items[fruit_t]["mon"].append(fruit_n)
if items[fruit_t]["count"] < fruit_n:
items[fruit_t]["count"] = fruit_n
else: # else add new fruit
items[fruit_t] = {"mon":[fruit_n],"count":fruit_n}
with open('fruits.pickle', 'wb') as f:
pickle.dump(items, f)
print(items)
就像我在评论中所说,您最初创建项目的方式及其所具有的值应该是第一次运行的默认值。
您还应该处理用户输入无效项目或未输入可转换为 int 的有效值的情况。
小写的 dicts 键并使用 fruit_t.lower()
也会更好。
打印信息:
for k in items:
print("{} monthly {}".format(k,items[k]["mon"]))
print("{} total {}".format(k,items[k]["count"]))
关于python - CSV如何查找值并编辑其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307671/