[英]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.