【问题标题】:Saving list from python to text file in format以格式将列表从python保存到文本文件
【发布时间】:2014-08-24 05:11:18
【问题描述】:

假设我有一个 txt 文件,

fantasy,12/03/2014
sci-fi,13/04/2014
history,03/04/2014

我使用以下代码将其转换为 python 列表

def load_list(filename):
    my_file = open(filename, "rU")
    my_list = []
    for line in my_file:
        a,b = line.rstrip("\n").split(",")
        my_list.append((as_datetime(b),a))
    my_file.close()
    return my_list

哪个输出 [(datetime.datetime(2014, 3, 12, 0, 0), 'fantasy'), (datetime.datetime(2014, 4, 3, 0,
0), '历史'), (datetime.datetime(2014, 4, 12, 0, 0), 'sci-fi')].

我可以假设列表在使用时会被进一步修改(附加和删除)。我的问题是,如何实现将列表导出为遵循原始文件格式的 txt 文件的功能?

【问题讨论】:

    标签: python file-io


    【解决方案1】:

    您可以使用csv 模块进行读写。

    为了遵循日期格式,请使用 datetime 模块中的 strptime()strftime() (docs)。

    这是一个完整的例子:

    import csv
    from datetime import datetime
    
    FORMAT = '%d/%m/%Y'
    
    def load_list(filename):
        my_list = []
        with open(filename, "rU") as f:
            reader = csv.reader(f)
            for line in reader:
                my_list.append([line[0], datetime.strptime(line[1], FORMAT)])
        return my_list
    
    
    def save_list(filename, my_list):
        with open(filename, "w") as f:
            writer = csv.writer(f)
            for item in my_list:
                writer.writerow([item[0], item[1].strftime(FORMAT)])
    
    
    my_list = load_list('input.txt')
    save_list('output.txt', my_list)
    

    它从input.txt 读取数据并将其写入output.txt。运行脚本后,output.txt 包含与input.txt 相同的数据:

    fantasy,12/03/2014
    sci-fi,13/04/2014
    history,03/04/2014
    

    希望对您有所帮助。

    【讨论】:

    • 还有一个问题 - 而不是您正在使用的 from datetime import datetime,而是为我提供了单独的函数来将日期与日期时间相互转换。将字符串转换为日期时间的函数工作正常( my_list.append([as_datetime(line[1]), line[0]]),但在 save_list 函数中将日期时间转换为字符串会出错。将日期时间转换为字符串的函数是 def as_date_string(date): return date.strftime(DATE_FORMAT) 在我这样称呼它时不起作用writer.writerow([item[0], as_date_string(item[1])])
    • @Chrystael 好的,你遇到了什么错误?此时日期时间的价值是多少? DATE_FORMAT 是什么?
    • 这是整个错误:Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> save_list("outputtest.txt", my_list) File "C:\Users\anon\Desktop\Python 1\assign1test.py", line 53, in save_list writer.writerow([item[0], as_date_string(item[1])]) File "C:\Users\anon\Desktop\Python 1\assign1test.py", line 30, in as_date_string return date.strftime(DATE_FORMAT) AttributeError: 'str' object has no attribute 'strftime' DATE_FORMAT 只是您解决方案中的 FORMAT。
    • @Chrystael 错误表明date 是此时的字符串,而不是日期时间。没有看到你正在使用的代码就不能说更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多