在列表上工作并在csv文件上写入输出

时间:2019-05-18 12:14:41

标签: python python-3.x

我有一个名称和代码列表,如字符串所示:

['Daniel', '5104', 'peter', '9770']

如何按此顺序更改它,列出每个名称和编号,并用它们更新第一个列表,如下所示:

[['Daniel', '5104'], ['peter', '9770']]

最后,我将按照以下顺序在csv文件中写入该列表:

daniel,5104
peter,9770

这是我的代码,用于将数据写入.csv文件:

with open('code.csv', 'w', newline='') as output_file_name:
  writer = csv.writer(output_file_name)
  writer.writerows(data)
  output_file_name.close()

4 个答案:

答案 0 :(得分:2)

您可以通过列表理解来做类似的事情。

l = ['Daniel', '5104', 'peter', '9770']
print([l[i:i+2] for i in range(0, len(l), 2)])

答案 1 :(得分:1)

您也可以使用:

lst = ['Daniel', '5104', 'peter', '9770']
print zip(lst[::2], lst[1::2])


>>> [('Daniel', '5104'), ('peter', '9770')]

lst[1::2]代表“ lst,从索引1开始,每2个元素取一个元素”

答案 2 :(得分:0)

您可以使用islice中的itertools。下面的代码应该可以工作。

from itertools import islice

input = ['Daniel', '5104', 'peter', '9770']

print(list(zip(islice(input,0, len(input), 2), islice(input,1, len(input), 2))))

输出:

[('Daniel', '5104'), ('peter', '9770')]

如果只想列出,则可以执行以下操作。

print(list(map(list, zip(
    islice(input,0, len(input), 2),
    islice(input,1, len(input), 2)
    ))))

答案 3 :(得分:0)

如果您提前知道列表的形状,则可以按定义的步骤遍历列表,以便以正确的顺序获取数据。例如,如果列表始终看起来像这样:

['name1','number1','name2','number2',...]

其中name1number1相关联,name2number2相关联...,您可以使用步骤2的for循环,这样您将获得所有名称,并且可以轻松获取数字,例如:

myInputList = ['name1','number1','name2','number2']
myOutputList = []
for i in range(0,len(myList),2):
    myOuputList.append([myInputList[i],myInputList[i+1])

它应该像这样工作。

希望有帮助。