处理从Python中的文件读取的列表

时间:2017-01-30 13:41:23

标签: python python-2.7

我是Python 2.7(和编程)初学者。另外,这是我关于SO的第一个问题。

我目前正在构建一个小型购物车应用程序。我将购物车价值存储在txt文件中。如果运行脚本的用户已经在前一个会话的txt文件中保存了购物车,我希望程序提供继续购物车中的这些商品。

这是我到目前为止所做的:

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

最终的印刷声明基本上只是一个占位符,也是我看到发生了什么的方法。我有点卡在那里。最后带有for循环的代码基本上会生成各种行,每行都有一个列表。喜欢这个

['Martin']
['Milk', '2']
['Apple', '4']

我想要做的是"访问"代表产品和价值的价值观数量,然后将它们添加到购物卡类。但是如何处理这个列表才能访问这些值?

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

正如e4c5所说,不使用更高级的概念(数据库,或只使用简单的json或pickle),你会让自己变得更加困难。

如果你只想直接使用纯文本文件存储和加载值,不仅编写代码要困难得多(老实说,我已经编程多年了,我仍然不相信我做对了!)而且还为每个人(包括你自己在未来)阅读代码。可维护性实际上是 - 从经验 - 编程的冬青。这就是我们毕竟使用python的原因!

那就是说,我明白,你并不是想要建立一个完美的解决方案,而是要学习编程!

那就是说,你的cart.txt可能看起来像这样:

Martin
Milk 2
Apple 4
Eva
Milk 1

然后你的for循环看起来像这样(例如,但正如我所说,这不是一个正确的方法,我 非常脆弱和错误!):

enter_name_found = False
cart_items = {}
for line in my_file:
    line_list = line.split()
    if len(line_list) == 1:
        if line_list[0] == enter_name:
            enter_name_found = True
        else:
            if enter_name_found:
                break
    else:
        if enter_name_found:
            cart_items[line_list[0]] = line_list[1]
print(cart_items)

编辑:

为了证明这一切使用数据库有多简单:

以下是保存购物车的完整示例:

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"])