Python CSV文件内容正在加载,其中包含;引述;

Python CSV文件内容正在加载,其中包含;引述;,python,csv,file,Python,Csv,File,我需要帮助从csv文件写入和恢复数据 我的参数game是由两个元素组成的元组。下面是一个例子: (((4, 0), (4, 1), (4, 2), (4, 3)), [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0,

我需要帮助从csv文件写入和恢复数据

我的参数
game
是由两个元素组成的元组。下面是一个例子:

(((4, 0), (4, 1), (4, 2), (4, 3)), [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]])
我需要两个函数,一个用来保存游戏,另一个用来恢复游戏。这就是我目前所做的:

要保存游戏,请执行以下操作:

def save_game(game):
    with open ('file.csv', 'w') as f:
        csv_file = csv.writer(f)
        csv_file.writerow(game)
def recover_game():
    with open ('file.csv', 'r') as f:
        csv_file = csv.reader(f)
        for line in csv_file:
            game = line[0], line[1]
            return game
要恢复游戏,请执行以下操作:

def save_game(game):
    with open ('file.csv', 'w') as f:
        csv_file = csv.writer(f)
        csv_file.writerow(game)
def recover_game():
    with open ('file.csv', 'r') as f:
        csv_file = csv.reader(f)
        for line in csv_file:
            game = line[0], line[1]
            return game
然而,当恢复游戏时,我得到了如下结果:

('((4, 0), (4, 1), (4, 2), (4, 3))', '[[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]')
有没有办法删除引号,这样我就可以得到一个类似于传递给我的
游戏
参数的元组


谢谢。

正如@BoarGules所指出的,您可能应该在本例中使用。以下是您如何做到这一点:

import pickle


def save_game(game, out_pathname="./game.pkl"):
    with open(out_pathname, "wb") as out_file:
        pickle.dump(game, out_file, pickle.HIGHEST_PROTOCOL)


def recover_game(in_pathname="./game.pkl"):
    with open(in_pathname, "rb") as in_file:
        return pickle.load(in_file)

该方法的一个优点是,它可以处理任何可拾取的对象,因此即使您以后决定更改
游戏
对象的内部细节,上述两个函数仍然可以工作。

模块
csv
会转换非字符串的所有内容(例如元组)在写入字符串表示形式之前,将其转换为字符串表示形式。但您希望存储元组,而不是字符串表示。因此,CSV对于持久化数据来说是一个糟糕的选择。查看
pickle
模块。您希望数据作为CSV文件显示什么?它看起来可能与原始元组不完全相同,但如果您希望每个元组与文件中的一行相对应(例如),这是可行的。将其仅设为一行实际上没有意义。每一个元组一行是更好的选择。但是如果我想用CSV模块来实现,有可能吗?