python - 在 Python 中以不同的顺序写出 CSV 列

标签 python csv

我意识到这与 question 非常相似.但是,我有一个 CSV 文件,它总是采用相同的格式,我需要以不同的顺序用列写出,以便将其向下移动到数据处理管道。如果我的 csv 文件包含这样的标题和数据:

Date,Individual,Plate,Sample,test,QC
03312011,Indiv098,P342,A1,deep,passed
03312011,Indiv113,P352,C3,deep,passed

我如何写出与原始输入 csv 具有相同列但按以下顺序排列的 csv 文件:

test,QC,Plate,Sample
deep,passed,P342,A1
deep,passed,P352,C3

我最初的想法是做这样的事情:

f = open('test.csv')
lines = f.readlines()
for l in lines:
    h = l.split(",")
    a, b, c, d, e, f  = h
    for line in h:
        print e, f, c, d, 

最佳答案

如果输入文件或输出文件每次都不具有相同布局的可能性很小,那么这里有一个更通用的获取“reorderfunc”的方法:

writenames = "test,QC,Plate,Sample".split(",") # example
reader = csv.reader(input_file_handle)
writer = csv.writer(output_file_handle)
# don't forget to open both files in binary mode (2.x)
# or with `newline=''` (3.x)
readnames = reader.next()
name2index = dict((name, index) for index, name in enumerate(readnames))
writeindices = [name2index[name] for name in writenames]
reorderfunc = operator.itemgetter(*writeindices)
writer.writerow(writenames)
for row in reader:
    writer.writerow(reorderfunc(row))

关于python - 在 Python 中以不同的顺序写出 CSV 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117868/

相关文章:

amazon-web-services - 如何为通过 CSV 导入 AWS Neptune 的 Vertex 属性安排单一基数?

python - 使用正则表达式 python 验证卡号

python - 为什么修改类属性不会修改 Python 中的对象属性?

Python-Heroku - aiohttp 3.7.3 要求 chardet<4.0,>=2.0,但您将拥有不兼容的 chardet 4.0.0

python - numpy dot() 和 Python 3.5+ 矩阵乘法之间的区别@

mysql - main :Object (NameError) 的未定义局部变量或方法 `category'

python - 这个函数是 O(N+M) 还是 O(N*M)?

file - JCAMP-DX 数据格式是什么?

php - 如何以最快的方式导入数据进行分析

Python CSV,如何在逐行(逐行)读取数据的同时将数据追加到行尾?