在Python中处理从文件读取的列表
我是Python 2.7(和编程)的初学者。还有,这是我的第一个问题 我目前正在构建一个小型购物车应用程序。我将购物车值存储在txt文件中。如果运行脚本的用户已经在上一个会话的txt文件中保存了一个购物车,我希望程序提供继续使用购物车中的那些项目的报价 以下是我到目前为止的情况:在Python中处理从文件读取的列表,python,python-2.7,Python,Python 2.7,我是Python 2.7(和编程)的初学者。还有,这是我的第一个问题 我目前正在构建一个小型购物车应用程序。我将购物车值存储在txt文件中。如果运行脚本的用户已经在上一个会话的txt文件中保存了一个购物车,我希望程序提供继续使用购物车中的那些项目的报价 以下是我到目前为止的情况: my_file = open("cart.txt", "r") match = re.findall(r'%s' % enter_name, my_file.read()) my_file.close() #using
my_file = open("cart.txt", "r")
match = re.findall(r'%s' % enter_name, my_file.read())
my_file.close()
#using a regular expression here to find the person's cart by name
#in cart.txt.
if match:
print "Hello %s, welcome back." % enter_name
print "Do you want to use your previous Shopping Cart?"
continue_cart = raw_input("Type 'yes' or 'no' ")
if continue_cart == "yes":
with open("cart.txt", "r") as my_file:
for line in my_file:
line_list = line.split()
print line_list
#to be continued
最终的print语句基本上只是一个占位符,也是我查看结果的一种方式。我有点困在那里了。末尾带有for循环的代码基本上会生成各种行,每行都有一个列表。像这样
['Martin']
['Milk', '2']
['Apple', '4']
我想做的是“访问”代表产品和数量的值,然后将它们添加到购物卡类中。但是如何处理这个列表以便能够访问这些值呢
感谢您的帮助。谢谢。正如e4c5所说,如果不使用更高级的概念(数据库,或者只使用简单的json或pickle),您将使自己更加困难 如果您只想直接使用纯文本文件来存储和加载值,那么不仅编写代码要困难得多(老实说,我已经编写了很多年了,我仍然不相信我做对了!),而且每个人(包括将来的你自己)都可以阅读代码。从经验来看,可维护性实际上是编程的圣杯。这就是我们使用python的原因 也就是说,我明白,你不是在试图构建一个完美的解决方案,而是在学习编程 也就是说,您的cart.txt可能如下所示:
Martin
Milk 2
Apple 4
Eva
Milk 1
然后,您的for循环看起来是这样的(例如,正如我所说的,这不是一种正确的方法,我认为它非常脆弱,而且有缺陷!)
编辑:
要演示这一切使用数据库是多么简单:
以下是保存购物车的完整示例:
import shelve
cart = shelve.open("cart.dat")
cart["Martin"] = {"Apple": 5, "Milk": 2}
cart["Eva"] = {"Milk": 1, "Cat": 4}
cart.close()
以及从DB加载购物车的完整示例:
import shelve
cart = shelve.open("cart.dat")
print(cart["Martin"])
print(cart["Eva"])
使用文本文件进行这类工作是非常困难的。请考虑使用RDBMS代替,西西里@ E4C5所说的!但是,如果使用文本文件,请考虑使用序列化库,如“代码> CSV ”、“代码>泡菜< /代码>或<代码> JSON<代码>,以转储和加载Python对象。我认为这不是一种最先进的方法。我一定会研究RDBMS的。非常感谢!这很有说服力。我不会再浪费时间构建依赖于.txt数据的代码,而是开始研究数据库。
import shelve
cart = shelve.open("cart.dat")
print(cart["Martin"])
print(cart["Eva"])