2009-07-29 148 views
2

我有一個CSV文件,我正在處理並將處理後的數據放入一個文本文件。 進入文本文件的整個數據都是一個大表格(用逗號分隔而不是空格)。我的問題是如何記住一段數據在文本文件中的位置?將表格數據放入python的最佳方式是什麼?

例如,假設有一個名爲「col」的列。 我只是把一些數據放在列中。現在經過幾次迭代後,我想再次在col下放一些其他數據(在不同的行中)。我怎麼知道col的確切位置? (也有很多這樣的列)。

希望我不是太模糊了......

+3

-1:可怕的含糊不清。請舉一個例子。 – 2009-07-29 10:51:36

回答

2

請使用列表清單。那就是:

[[col1, col2, col3, col4], # Row 1 
[col1, col2, col3, col4], # Row 2 
[col1, col2, col3, col4], # Row 3 
[col1, col2, col3, col4]] # Row 4 

要修改特定的列,你可以用一條語句將其轉化成列的列表:

>>> cols = zip(*rows) 
>>> cols 
[[row1, row2, row3, row4], # Col 1 
[row1, row2, row3, row4], # Col 2 
[row1, row2, row3, row4], # Col 3 
[row1, row2, row3, row4]] # Col 4 
0

或許任一listdictdict一個list。就我個人而言,我會和前者一起去。因此,解析CSV的標題行以獲得從列標題到列索引的dict。然後,當您讀完每一行時,計算出您所在的目錄,獲取列標題,然後追加到列標題列表的末尾。

1

Python的CSV庫有一個function named DictReader,允許您查看和操作數據爲Python字典,它允許您使用正常的迭代工具。

1

是SQLite,讓您的選擇?我知道你有CSV輸入和輸出。但是,您可以將所有數據導入到SQLite數據庫中。然後用SQL的強大功能進行所有必要的處理。然後,您可以將結果導出爲CSV。

0

好問題,我經常遇到這個問題。

一般來說,爲了處理這樣的csv文件,我更喜歡使用R,它是專門爲此設計的data.frame對象。

在Python中,你可以看看這個庫稱爲數據矩陣:

或者,也許在numpy的/ SciPy的的矩陣。

命名元組是已被因子評分解析CSV文件的另一種選擇,但他們沒有pbased在矩陣的概念:

0

你的情況是怎麼樣的模糊的,但我會試着回答你的問題,「我如何記住文本文件中的一段數據所在的列?」

一種方法是將行列表存儲爲字典。

注:我通常使用製表符分隔的文本文件,所以請原諒我,如果我忘記了一些關於csv格式化的內容。

input_file = open('input.csv', 'r') 

# ['col1', 'col2', 'col3'] 
headers = input_file.readline().strip().split(',') 
stored_rows = [] 
for line in input_file: 
    row_data = line.strip().split(',') 
    stored_rows.append(dict(zip(headers, row_data))) 

現在每一行都有每一列,然後你可以處理和輸出可以以任意順序你需要的值。

output_headers = ['col3', 'col1', 'col2'] 
output_file = open('ouput.csv', 'w') 
output_file.write(','.join(output_headers) + '\n') 
for row in stored_rows: 
    # do any processing you need here 
    row['col1'] = row['col1'].strip().lower() #for example 

    # write the data to your output file in the order you want it 
    output_file.write(','.join(map(row.get, output_headers)) + '\n') 
相關問題