簡體   English   中英

使用python csv寫入不同的列

[英]Writing to different columns using python csv

我正在制作一個腳本,將一堆 txt 文件組合成一個 csv 文件,但是因為我使用的是 csv 包,所以我只能使用 writerow 而不是列。 現在它只是制作一個包含一列和一堆行的 csv 文件。

def l_r_file(dirstart):
print(os.listdir())
with open("config.csv", 'w', newline='')as f:
    writer = csv.writer(f)
    all_dir = os.listdir()
    for x in all_dir[:-1]:
        os.chdir(dirstart + '\\' + x)
        working_file = open('Config.txt', "r")
        commaseperated = working_file.readlines()
        for i in commaseperated:
            writer.writerow([i])
        os.chdir(dirstart)
        working_file.close()

config.txt 文件的設置方式是它只有一列多行的文本。 我正在嘗試設置 csv 頁面,以便可以比較不同的 txt 文件。 例如,假設 config.txt 中的第一行表示“Emily”,另一個配置文件的第一行表示 bob,我希望能夠在 csv 文件中並排比較兩個或多個。 但是我將txt文件中的字符串打開/保存到列表中。 這是一個問題,因為通常 csv 文件需要在同一列表中的一行中的東西,比如

rows = [ ['Nikhil', 'COE', '2', '9.0'],  
         ['Sanchit', 'COE', '2', '9.1'],  
         ['Aditya', 'IT', '2', '9.3'],  
         ['Sagar', 'SE', '1', '9.5'],  
         ['Prateek', 'MCE', '3', '7.8'],  
         ['Sahil', 'EP', '2', '9.1']]  

每個列表將變成一行,但由於我的數據,我將它們放在這樣的列表中

List1 = ['emily', 'randy', 'tom']
List2 = ['bob', 'tom', 'astrid']

因為我正在讀取每個 txt 文件並將其存儲到列表中。 這是我的 txt 文件可能的樣子。

emily
randy
tom
eric
lisa

我正在處理一堆 txt 文件,每個文件中也有一堆行。 我覺得我想多了。 如果我不清楚,請告訴我謝謝!. 也可能有一種簡單的方法可以在熊貓上做到這一點,但我試圖在沒有熊貓的情況下做到這一點。

我試過將它們組合成這樣的二維列表

combined_lst = [['emily', 'randy', 'tom'], ['bob', 'tom', 'astrid']]

並使用循環引用它們。 但是,由於 txt 文件具有不同的長度,例如。 一個配置文件中的名稱多於另一個它不起作用。

讀取整個文件並將其拆分為空白。 那應該產生一個包含每一行的列表。 然后將整行寫入 csv。

....
    for x in all_dir[:-1]:
        os.chdir(dirstart + '\\' + x)
        with open('Config.txt', "r") as working_file:
            data = working_file.read().split()
            writer.writerow(data)
        os.chdir(dirstart)

在您的原始文件中, splitlines()為您提供了一個包含每一行的列表。

In [63]: working_file.readlines()
Out[63]: ['emily\n', 'randy\n', 'tom\n', 'eric\n', 'lisa']

所以你的原件可以像這樣改變。

....
    for x in all_dir[:-1]:
        os.chdir(dirstart + '\\' + x)
        working_file = open('Config.txt', "r")
        commaseperated = working_file.readlines()
        #for i in commaseperated:
        writer.writerow(commaseperated)
        os.chdir(dirstart)
        working_file.close()

請注意, splitlines()在每行末尾保留換行符。 您可能不希望在您的 csv 文件中使用它。

暫無
暫無

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

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