Python列表写入CSV而没有方括号

时间:2015-07-23 12:44:49

标签: python csv

我有这个主要功能:

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,

4 个答案:

答案 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))