Python: 将用户指定的某些列写入新文件
Python: Writing certain columns specified by user to new file
如果我有一个包含多列的文件,例如
0, 1, 2, 3, 4, 5, 6
a, b, c, d, e, f, g
我想将某些列写入新文件,其中列号存储在列表中 col=[]
。这将如何使用存储在列表中的列号的迭代来复制结果,例如:
new_file.write(line[0]+','+line[5]+','+line[6]+'\n')
我试过了:
col = [0,5,6]
for line in file:
new_file.write(line[i] for i in col)
但是这不起作用,我在最后一行遇到了类型错误。最后,我想让用户输入列表,以便输出文件仅包含指定的列,这些列用“,”分隔,就像上面的示例文件一样。
您必须先拆分列,因为它们是单个字符串,最好使用 str.join
将它们粘在一起:
col = [0,5,6]
for line in file:
line = line.split()
new_file.write(", ".join(line[i] for i in col))
for line in file:
迭代每一行的每个字符,而不是你想要的。
与逗号分隔文件一样,您应该使用 csv
模块正确读取字段,并使用相同的 csv
模块将它们写回:
import csv
col = [0,5,6]
with open("input.csv") as fr, open("output.csv","w",newline="") as fw:
cr = csv.reader(fr)
cw = csv.writer(fw)
cw.writerows([row[i] for i in col] for row in cr)
创造:
0, 5, 6
a, f, g
Python 2.7 需要将 open("output.csv","w",newline="")
更改为 open("output.csv","wb")
如果我有一个包含多列的文件,例如
0, 1, 2, 3, 4, 5, 6
a, b, c, d, e, f, g
我想将某些列写入新文件,其中列号存储在列表中 col=[]
。这将如何使用存储在列表中的列号的迭代来复制结果,例如:
new_file.write(line[0]+','+line[5]+','+line[6]+'\n')
我试过了:
col = [0,5,6]
for line in file:
new_file.write(line[i] for i in col)
但是这不起作用,我在最后一行遇到了类型错误。最后,我想让用户输入列表,以便输出文件仅包含指定的列,这些列用“,”分隔,就像上面的示例文件一样。
您必须先拆分列,因为它们是单个字符串,最好使用 str.join
将它们粘在一起:
col = [0,5,6]
for line in file:
line = line.split()
new_file.write(", ".join(line[i] for i in col))
for line in file:
迭代每一行的每个字符,而不是你想要的。
与逗号分隔文件一样,您应该使用 csv
模块正确读取字段,并使用相同的 csv
模块将它们写回:
import csv
col = [0,5,6]
with open("input.csv") as fr, open("output.csv","w",newline="") as fw:
cr = csv.reader(fr)
cw = csv.writer(fw)
cw.writerows([row[i] for i in col] for row in cr)
创造:
0, 5, 6
a, f, g
Python 2.7 需要将 open("output.csv","w",newline="")
更改为 open("output.csv","wb")