如何将所有循环输出放入变量中(用于生成输出文件)? (CSV 相关)

How do I put all my looped output in a variable (for generating an output file)? (CSV related)

我对使用 python 还很陌生,所以我希望你能在这里帮助我。我必须编写一个程序来打开一个 csv 文件,读取它并通过输入数字让你 select 列。那些必须放在一个新文件中。问题是:在输入了我想要的列并将 "X" 用于启动主要部分之后,它生成了我想要的内容,但是通过使用循环,而不是打印包含它的变量。但是对于 csv 编写器,我需要一个包含它的变量。有任何想法吗?在这里你有我的代码,如有问题请随时提问。 csv 文件就像:

john, smith, 37, blue, michigan
tom, miller, 25, orange, new york
jack, o'neill, 40, green, Colorado Springs
...etc

代码是:

import csv

with open("test.csv","r") as t:
    t_read = csv.reader(t, delimiter=",")
    t_list = []
    max_row = 0
    for row in t_read:
        if len(row) != 0:
            if max_row < len(row):
                max_row = len(row)
            t_list = t_list + [row] 
            print([row], sep = "\n")
    twrite = csv.writer(t, delimiter = ",")
    tout = []
    counter = 0
    matrix = []
    for i in range(len(t_list)):
        matrix.append([])
    print(len(t_list), max_row, len(matrix), "Rows / Columns / Matrix Dimension")
eingabe = input("Enter column number you need or X to start generating output: ")
nr = int(eingabe)
while type(nr) == int:
    colNr = nr-1
    if max_row > colNr and colNr >= 0:
        nr = int(nr)
        # print (type(nr))
        for i in range(len(t_list)):            
            row_A=t_list[i]            
            matrix[i].append(row_A[int(colNr)])
            print(row_A[int(colNr)])
        counter = counter +1
        matrix.append([])
    else:
        print("ERROR")

    nr = input("Enter column number you need or X to start generating output: ")

    if nr == "x":
        print("\n"+"Generating Output... "  + "\n")        
        for row in matrix:
    # Loop over columns.           
            for column in row:     
                print(column + " ", end="")
            print(end="\n")

    else:
        nr = int(nr)

print("\n")


t.close()

好吧,matrix 拥有您需要的一切,除了添加不需要的行的错误行:

    counter = counter +1
    matrix.append([])   # <= remove this line
else:
    print("ERROR")

然后你可以简单地做:

if nr == "x":
    print("\n"+"Generating Output... "  + "\n")        
    with open("testout.csv", "w") as out:
        wr = csv.writer(out, delimiter=",")
        wr.writerows(matrix)