簡體   English   中英

如何將多個列表寫入csv文件?

[英]How do I write multiple lists to a csv file?

我正在嘗試將兩個不同的列表寫入csv文件中的對列,但是當我執行代碼時,我收到錯誤。

我編寫代碼來瀏覽文件目錄,使用Regex將文件名抓取/拆分為列表變量,然后我想將這些值寫入兩個單獨列中的csv文件。 我可以使用單個for循環來獲取代碼,但我不能讓它同時執行這兩個列表。

import os
import csv
import re

path = r"D:\Documents\Python_test\\"

files = []
csv_filename = "python_list_test.csv"
fd = []
fn = []
#r = root, d = directory, f = files

for r,d,f in os.walk(path):
    for name in f:
        if '.txt' in name:
            files.append(name)
            split_string = re.split('(\A[0-9]{6})', name)
            fd.append(split_string[1])
            fn.append(split_string[2])

with open(csv_filename,mode='w',newline='') as c:
    writer = csv.writer(c)
    writer.writrow(['Date','File Name',])

    writer.writrows([i] for i in fd,[e] for e in fn)

我收到一個錯誤代碼:

 File "C:/Users/[FILE NAME].py", line 25 writer.writrows^([i] for i in fd,[e] for e in fn)

SyntaxError: Generator expression must be parenthesized

嘗試

with open('output.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(fd, fn))

我設法讓它使用以下代碼,但我不知道這是最好的方法,或者我是否應該擔心效率:

    for name in f:
        if '.txt' in name:
            files.append(name)
            split_string = re.split('(\A[0-9]{6})', name)
            fd.append(split_string[1])
            fn.append(split_string[2])

            with open(csv_filename,mode='a',newline='') as c:
                writer = csv.writer(c)
                writer.writerow([split_string[1],split_string[2]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM