[问题] 如何将writer.writerow()内参数设为变量?

楼主: qazwsx0159 (平凡无奇)   2019-06-02 12:37:55
各位大大好,请先看一段小小程式码,如下:
for x in range(1,1001,1):
with open('fix.csv','rb') as csvinput:
with open('fix_append.csv','wb') as csvoutput:
writer = csv.writer(csvoutput)
for row in csv.reader(csvinput):
if j<len(AddNewColumn):
writer.writerow([row[0],row[1],...,row[x],AddNewColumn[j]])
以上就是想把fix.csv的东西写进fix_append.csv,然后再加上一列AddNewColumn的值
以下为小弟问题,请问各位大大
如何将writer.writerow([row[0],row[1],...,row[x],AddNewColumn[j]])的row[x]设定
为变量呢?
也就是说,在最上层的for循环里,
当x=1,writer.writerow([row[0],AddNewColumn[j]])
当x=2,writer.writerow([row[0],row[1],AddNewColumn[j]])
当x=3,writer.writerow([row[0],row[1],row[3],AddNewColumn[j]])
小弟有尝试用字串的方式来解,如下
for x in range(1,1001,1):
xxx="%d"%(x-1)
RowString=RowString+'row['+xxx+'],'
with open('fix.csv','rb') as csvinput:
with open('fix_append.csv','wb') as csvoutput:
writer = csv.writer(csvoutput)
for row in csv.reader(csvinput):
if j<len(AddNewColumn):
Astring= RowString + "AddNewColumn["+ "%d"%j +"]"
Astring=Astring.split(',')
writer.writerow(Astring)
用上述方式印在fix_append.csv表上的就不是fix.csv里每一行row的值了,而是单纯的字
串row[0]、...、row[x]、AddNewColumn[j]
麻烦各位程式大神解惑了,感谢!
作者: art1 (人,原来不是人)   2019-06-02 15:17:00
把每次读到的row[x]新增到另外的串行里面?写入时就使用另外的这个串行不过 j 是从哪边冒出来的?不过你是不是不懂 for row in csv.reader()的意义阿?row 的内容已经会随着循环的进行不断变化了
作者: KSJ (阿真)   2019-06-05 18:22:00
知道你想问啥 但是看起来还有别的问题要处里
作者: Ronee (小梦)   2019-06-16 04:37:00
新变量y=1 第一句for底下再包一层if y != x write.writerow([row[y]) + ‘,’+ AddNew Colum[j]写在if之外。没学过python不知道这样的逻辑是否可行 如果有错请鞭小力一点...更正 if里面应该是:字串= 字串+ row[y] + ‘,’ y++write.writerow(字串+AddNew Column[j])

Links booklink

Contact Us: admin [ a t ] ucptt.com