[英]Python csv write list
我有一个代码可以将一堆行写入 csv 文件。 它写了我想要的东西,但是......它在每一列中插入括号......代码是:
root_text_csv = "C:/Users/s/Desktop/text/knife"+numarul_folderelor+".csv"
fisier_text_knife = csv.writer(open(root_text_csv,'wb'))
row_test = []
for filenames in os.listdir(foldere_prrra):
knife = filenames.replace("<SP>", " ").replace(".sys", "")
test = ['cut '+knife+' off for fuged,', 'cut '+knife+' off,', 'cut '+knife+' fool alabala,', 'cut '+knife+' nieh,', 'prrra '+knife+' alabala,',
'cut '+knife+' fuged streaming,', 'cut '+knife+' alabala fuged,', 'cut '+knife+' off alabala,', 'prrra '+knife+' fool alabala,',
'cut '+knife+' off fuged,', 'prrra '+knife+' niether alabala,', 'cut off '+knife+' for fuged,' 'cut '+knife+' fuged fool alabala,',
'cut '+knife+' off niether,', 'where to cut '+knife+',', ''+knife+' fool alabala off,', 'steel '+knife+' off fuged,', 'cut '+knife+' fuged niether,',
''+knife+' fool alabala off,', 'fuged streaming '+knife+',', 'cut '+knife+' niether,', 'cut '+knife+' fuged,', 'red '+knife+' off,', ''+knife+' off,',
'red '+knife+',', 'cut '+knife+',', ''+knife+' fuged,', 'fuged '+knife+',', ''+knife+' off,', 'off '+knife+',', ''+knife+',']
random.shuffle(test)
scris = [x for x in test if len(x) <= 30]
row_test.append(scris) #row_test.append(scris[0])
fisier_text_knife.writerow(row_test)
如果我更换row_test.append(scris[0:7])
与row_test.append(scris[0])
将其写入只有一个字符串关闭它们全部(但没有括号将其写- > [] < - )。
我想写7或8行。 我在这段代码上浪费了我的大脑。
谢谢你的时间。
发生这种情况的原因是因为scris
是一个列表。
代替:
row_test.append(scris[0:7])
这样做:
row_test += scris[0:7]
这也有效(见下面的评论):
row_test.extend(scris[0:7])
如果仍然没有意义,请打开控制台并输入下面的示例内容。 每次你改变l
打印出来。
下面的例子应该会告诉你为什么会这样:
l = [1,2,3] # l = [1,2,3]
l.extend([4,5]) #now l = [1,2,3,4,5]
l.append([6,7]) #now l = [1,2,3,4,5,[6,7]]
l.extend('hi there') #raises an exception
当您调用some_list.append(some_item)
它会将some_item
放入some_list
。 所以,如果some_item
也是一个列表,然后你会得到一个列表中的列表。
当你调用some_list.extend(some_item)
它加入some_item
在2002年底some_list
。 因此,如果some_item
不是列表,那么这将出错。
编辑我想我知道你现在想要什么......
所以给定一个列表,如[['1','2','3'],['4','5','6'],['7','8','9']]
你想要csv 看起来像: 123,456,789
,对吧?
代替:
fisier_text_knife.writerow(row_test)
试试这个:
csv_friendly = [''.join(l) for l in row_test]
fisier_text_knife.writerow(csv_friendly)
将写入文件的字符串与 print(row_test) 时相同 - 作为列表列表。
您可以使用 join 为每一行创建一个大字符串,例如:
row_test+= ','.join(scris) + '\n'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.