如何将所有循环输出放入变量中(用于生成输出文件)? (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)
我对使用 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)