2009-07-29 113 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') 
相关问题