我有这个主要功能:
def main():
subprocess.call("cls", shell=True)
ipList,hostList,manfList,masterList,temp = [],[],[],[],[]
ipList,hostList,manfList, = getIPs(),getHosts(),getManfs()
entries = len(hostList)
i = 0
for i in xrange(i, entries):
temp = [[hostList[i]],[manfList[i]],[ipList[i]]]
masterList.append(temp)
with open("output.csv", "wb") as f:
writer = csv.writer(f, delimiter=',')
writer.writerows(masterList)
我目前的输出是它成功写入CSV但我的目标是删除方括号。
我尝试使用.join()
方法但是我知道它只需要单个列表而不是嵌套列表。
如果我使用3维列表,我怎样才能实现这一目标?注意,我打算将来添加更多数据列。
编辑:
我的1行当前输出类似于:
['Name1,'] ['Brand,'] ['1.1.1.1,']
我希望它是:
Name1,Brand,1.1.1.1,
答案 0 :(得分:1)
尝试在创建temp
时删除masterList
中的值的括号,因为它将是嵌套列表。所以,代码应该是:
def main():
subprocess.call("cls", shell=True)
ipList,hostList,manfList,masterList,temp = [],[],[],[],[]
ipList,hostList,manfList, = getIPs(),getHosts(),getManfs()
entries = len(hostList)
i = 0
for i in xrange(i, entries):
temp = [hostList[i], manfList[i], ipList[i]]
masterList.append(temp)
with open("output.csv", "wb") as f:
writer = csv.writer(f, delimiter=',')
writer.writerows(masterList)
答案 1 :(得分:0)
你能做的是剥去一串数据吗?
import string
writer.writerows(str(masterList).translate(string.maketrans('', ''), '[]\'')
E.g。
>>> import string
>>> temp = [['1.1.1'], ['Name1'], ['123']]
>>> str(temp).translate(string.maketrans('', ''), '[]\'')
'1.1.1, Name1, 123'
答案 2 :(得分:0)
尝试改变这一点:
temp = [[hostList[i]],[manfList[i]],[ipList[i]]]
到此:
temp = [hostList[i],manfList[i],ipList[i]]
答案 3 :(得分:0)
我同意上面的答案,关于删除括号,但是如果由于某种原因这对你很重要,这里有一个函数,它将列表作为输入并返回一个csv行可接受的列表。
def output_list(masterList):
output = []
for item in masterList:
if isinstance(item,list): #if item is a list
for i in output_list(item): #call this function on it and append its each value separately. If it has more lists in it this function will call itself again
output.append(i)
else:
output.append(item)
return output
您可以在masterList.append(temp)
行masterList.append(output_list(temp))
中使用它,甚至可以这样:
#in the end
with open("output.csv", "wb") as f:
writer = csv.writer(f, delimiter=',')
for i in masterList:
writer.writerow(output_list(i))