2017-09-07 44 views
-1

我有一個整數值的多個列的大型CSV文件:如何爲每個CSV列生成特定文件?

1122 2222 3333 6664 
4588 2122 5555 7747 
1155 8844 1147 8895 
.... .... .... .... 

我想爲每一個列在此格式的特定文件。讓我們舉一個列1的示例:

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 1122 -u 1122 

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 4588 -u 4588 

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 1155 -u 1155 

直到第1列的值完成並將其存儲在特定文件中。

對於所有列應該重複相同的過程。最後,每列將具有格式爲「columnx.sh」的相應文件。

我們如何使用Python實現此功能?

+1

我認爲你不能要求人們爲你做代碼... – decadenza

+0

瞭解如何使用模式將數據寫入文件。另外嘗試讀取文件並將數據附加到它。這將有助於開始編寫代碼 –

+0

我不要求爲我編碼,我只是想要一些建議和提示,這是所有兄弟 – AbouSDN

回答

0

我會給出一個可能的解釋(當然有很多),而不用爲你編碼。與裸露的代碼片段相比,我認爲它更有價值。這個例子假設你在寫你的文件之前沒有讀取整個文件的內存限制。

模塊csv是操縱CSV文件的參考模塊,它集成在您的標準Python發行版http://python.org中。

一旦其用法是明確的你,與上下文管理工作打開和處理CSV文件,如在文檔的網站在這條巨蟒2爲例進行說明:

>>> import csv 
>>> with open('largefile.csv', 'rb') as csvfile: 
...  spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
...  for row in spamreader: 
...   # Store data in your data structure 

你需要指定在您的特定CSV文件中使用的csv.reader的分隔符參數。它可以是一個逗號,或一個標籤,或一組空格。

雖然spamreader讀取輸入文件的每一行,但您可以在讀取操作之前將每行的每個值存儲在您準備的數據結構中。在你的情況下,一個列表,基本上是一個矩陣列表,是一個不錯的選擇,因爲以後你需要以串行方式獲取你的數據。

您可以使用list.append方法將每行的每個項目推送到列表尾部。由於您需要按列掃描值,並且spamreader將按行工作,因此可以創建列表的列表,以便您可以非常輕鬆地在此矩陣中表示該表。

矩陣準備就緒後,可能使用上下文管理器編寫文件。

>>> with open('columnx.sh', 'a') as the_file: 
...  the_file.write('Hello\n') 

這是#2另一個問題文件寫的一個例子,在https://stackoverflow.com/a/6160082/3789324

在這種情況下,你需要file.write方法之前插入一個嵌套for循環中,你可以循環所有的列和列的所有元素。

其中產品你只是從列表中獲得的數量file.write方法應先寫

s1 = "sudo google-chrome -c -a tt1" 

字符串,然後該字符串

s2 = "sudo google-chrome -a tt1 -d item -u item" 

要替換字符串中的項目編號,你可以連接數字的字符串,是這樣的:

s = "sudo google-chrome -a tt1 -d " + str(item) + " -u " + str(item)" 

所以,現在你可以在每個不同的重複中的每個元素通過S1和S2的file.write寫方法的列:

this_file.write(s1 + "\n" + s2 + "\n") 

而你有你的代碼片段。