如何使用python

时间:2018-04-24 17:41:28

标签: python csv zip itertools

我正在尝试将两个列表写入csv文件。我尝试了这里列出的几个解决方案:How to write data from two lists into columns in a 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'列到副本的末尾(按此顺序)。我到目前为止尝试过的解决方案是否有替代方案?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用zip和生成器编写treecor来应用映射功能。这通常比fdopen()函数更受欢迎。

map

或完全跳过该步骤,只根据需要计算纬度/经度。由于您要附加列,因此需要完全覆盖csv文件。这对于您成功重命名的临时文件最好。使用zip将csv中的行与utm列表中的项组合在一起:

treecor = [utm.to_latlon(eas, nor, 20, 'Q') for eas, nor in zip(xUTM, yUTM)]

答案 1 :(得分:0)

我无法获得我发现的任何解决方案。最后一位朋友和我能够想出这个:

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