我有一個CSV文件,我正在處理並將處理後的數據放入一個文本文件。 進入文本文件的整個數據都是一個大表格(用逗號分隔而不是空格)。我的問題是如何記住一段數據在文本文件中的位置?將表格數據放入python的最佳方式是什麼?
例如,假設有一個名爲「col」的列。 我只是把一些數據放在列中。現在經過幾次迭代後,我想再次在col下放一些其他數據(在不同的行中)。我怎麼知道col的確切位置? (也有很多這樣的列)。
希望我不是太模糊了......
我有一個CSV文件,我正在處理並將處理後的數據放入一個文本文件。 進入文本文件的整個數據都是一個大表格(用逗號分隔而不是空格)。我的問題是如何記住一段數據在文本文件中的位置?將表格數據放入python的最佳方式是什麼?
例如,假設有一個名爲「col」的列。 我只是把一些數據放在列中。現在經過幾次迭代後,我想再次在col下放一些其他數據(在不同的行中)。我怎麼知道col的確切位置? (也有很多這樣的列)。
希望我不是太模糊了......
請使用列表清單。那就是:
[[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
或許任一list
或dict
的dict
一個list
。就我個人而言,我會和前者一起去。因此,解析CSV的標題行以獲得從列標題到列索引的dict
。然後,當您讀完每一行時,計算出您所在的目錄,獲取列標題,然後追加到列標題列表的末尾。
Python的CSV庫有一個function named DictReader,允許您查看和操作數據爲Python字典,它允許您使用正常的迭代工具。
是SQLite,讓您的選擇?我知道你有CSV輸入和輸出。但是,您可以將所有數據導入到SQLite數據庫中。然後用SQL的強大功能進行所有必要的處理。然後,您可以將結果導出爲CSV。
好問題,我經常遇到這個問題。
一般來說,爲了處理這樣的csv文件,我更喜歡使用R,它是專門爲此設計的data.frame對象。
在Python中,你可以看看這個庫稱爲數據矩陣:
或者,也許在numpy的/ SciPy的的矩陣。
命名元組是已被因子評分解析CSV文件的另一種選擇,但他們沒有pbased在矩陣的概念:
你的情況是怎麼樣的模糊的,但我會試着回答你的問題,「我如何記住文本文件中的一段數據所在的列?」
一種方法是將行列表存儲爲字典。
注:我通常使用製表符分隔的文本文件,所以請原諒我,如果我忘記了一些關於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')
-1:可怕的含糊不清。請舉一個例子。 – 2009-07-29 10:51:36