如何使用python将列表写入csv

如何使用python将列表写入csv,python,csv,zip,itertools,Python,Csv,Zip,Itertools,我正在尝试将两个列表写入csv文件。我尝试了以下列出的几种解决方案: izip解决方案对我不起作用。当我尝试时,我得到了以下错误: ImportError: cannot import name 'izip' 我可以导入itertools,但不能导入izip 然后我尝试了zip解决方案,但由于某种原因,它最终删除了我原始csv文件的内容。原始文件在那里,但现在里面什么也没有了。那绝对不是我想要的 这就是我现在拥有的: for eas,nor in zip(xUTM, yUTM): co

我正在尝试将两个列表写入csv文件。我尝试了以下列出的几种解决方案: izip解决方案对我不起作用。当我尝试时,我得到了以下错误:

ImportError: cannot import name 'izip'
我可以导入itertools,但不能导入izip

然后我尝试了zip解决方案,但由于某种原因,它最终删除了我原始csv文件的内容。原始文件在那里,但现在里面什么也没有了。那绝对不是我想要的

这就是我现在拥有的:

for eas,nor in zip(xUTM, yUTM):
    cor=(utm.to_latlon(eas, nor, 20, 'Q'))
    treecor.append(cor)
l=list(map(list,zip(*treecor)))
lat=l[0]
lon=l[1]
我想创建我的原始文件的副本,并在副本的末尾添加一个“lat”列和一个“lon”列(按该顺序)。目前为止,除了我已经尝试过的解决方案,还有其他选择吗


谢谢大家!

您可以使用zip和生成器编写treecor来应用映射函数。这通常优于
map
功能

treecor = [utm.to_latlon(eas, nor, 20, 'Q') for eas, nor in zip(xUTM, yUTM)]
或者完全跳过这一步,只根据需要计算lat/lon。由于要追加列,因此需要完全覆盖csv文件。最好对一个临时文件执行此操作,成功后重命名该文件。使用zip将csv中的行与utm列表中的项目组合在一起:

import os

xUTM, yUTM = get_utm_lists()

filename = 'orig.csv'

try:
    with open(filename) as in_fp, open(filename + ".tmp", "w") as out_fp:
        in_csv = csv.reader(in_fp)
        out_csv = csv.writer(out_fp)
        for row, eas, nor in zip(in_csv, xUTM, yUTM):
            out_csv.write(row + *utm.to_latlon(eas, nor, 20, 'Q'))
    os.rename(filename + ".tmp", filename)
except OSError as e:
    print(e)

我找不到任何有效的解决方案。最后,我和一位朋友想出了一个办法:

with open('cord_out.tsv','w')as fh:
    for i in treecor:
        print(i[0],'\t',i[1],file=fh)

您正在使用Python3中的Python2答案。在Python3中,
itertools.izip
被重命名为普通的旧内置
zip
。您没有显示您的文件处理代码—当您说lat log column时—您是指每一行吗?你必须用新的列完整地写出每一行。在写模式下打开文件名会删除原始文件的内容。如果你在玩弄这类东西,我会建议你使用不同的输入和输出文件名,直到你使用它为止。我已经将Python3的不同之处编辑成了你链接到的问题的公认答案。编辑后的版本是否足以让你明白这些事情?啊哈!这就解释了!你能解释一下如何使用zip吗?或者你能和我一起找个地方吗?