如何将itertools.izip逐行写入txt文件?
How to write itertools.izip to txt file one by line?
我的代码
import itertools
import os
with open("base.txt") as fv, open("new2.txt", 'r') as fi, open('sortedf.txt','w') as fs:
vel = (line.strip() for line in fv)
ind = (int(line.strip()) for line in fi)
z = itertools.izip(ind, vel) # sort according to ind
# itertools.izip(vel, ind) # sort according to vel
for i, v in sorted(z):
fs.write(str(v))
我在一条线上搞定了一切
2.900000e+032.900000e+032.900000e+032.900000e+032.
当我改成
fs.write('\n'.join(str(v)))
然后我得到了
2
.
9
0
0
0
0
0
e
+
0
32
.
9
0
0
0
0
0
e
+
0
32
.
如何得到正确的逐行值输出?
请尝试以下操作
fs.writelines(map(lambda x: x[1], sorted(z)))
为什么下面的语句失败了
fs.write('\n'.join(str(v)))
这里 v, 被转换成一个列表,并在其上应用连接。为了清楚起见,请看下面的示例
>>> sam = 'hello'
>>> '-'.join(sam)
'h-e-l-l-o'
那么如何使用fs.write?
- 写成:fs.write(v)
- 现在添加换行符:fs.write('\n')
几点建议:
import os # load important modules first
from itertools import izip # makes processing faster, if you only need izip
with open("base.txt") as fv, open("new2.txt", 'r') as fi, open('sortedf.txt','w') as fs:
vel = [line.strip() for line in fv] # use square braces
ind = int(line.strip()) for line in fi] # use square braces
z = izip(ind, vel) # sort according to ind
for i, v in sorted(z):
fs.write(v)
fs.write('\n') # adding line break
只是改变
for i, v in sorted(z):
fs.write(str(v))
到
for i,v in sorted(z):
print(v, file=fs)
由于 print
的 end="\n"
默认参数,自动添加 \n
适用于任何数据类型。不需要 str(v)
我的代码
import itertools
import os
with open("base.txt") as fv, open("new2.txt", 'r') as fi, open('sortedf.txt','w') as fs:
vel = (line.strip() for line in fv)
ind = (int(line.strip()) for line in fi)
z = itertools.izip(ind, vel) # sort according to ind
# itertools.izip(vel, ind) # sort according to vel
for i, v in sorted(z):
fs.write(str(v))
我在一条线上搞定了一切
2.900000e+032.900000e+032.900000e+032.900000e+032.
当我改成
fs.write('\n'.join(str(v)))
然后我得到了
2
.
9
0
0
0
0
0
e
+
0
32
.
9
0
0
0
0
0
e
+
0
32
.
如何得到正确的逐行值输出?
请尝试以下操作
fs.writelines(map(lambda x: x[1], sorted(z)))
为什么下面的语句失败了
fs.write('\n'.join(str(v)))
这里 v, 被转换成一个列表,并在其上应用连接。为了清楚起见,请看下面的示例
>>> sam = 'hello'
>>> '-'.join(sam)
'h-e-l-l-o'
那么如何使用fs.write?
- 写成:fs.write(v)
- 现在添加换行符:fs.write('\n')
几点建议:
import os # load important modules first
from itertools import izip # makes processing faster, if you only need izip
with open("base.txt") as fv, open("new2.txt", 'r') as fi, open('sortedf.txt','w') as fs:
vel = [line.strip() for line in fv] # use square braces
ind = int(line.strip()) for line in fi] # use square braces
z = izip(ind, vel) # sort according to ind
for i, v in sorted(z):
fs.write(v)
fs.write('\n') # adding line break
只是改变
for i, v in sorted(z):
fs.write(str(v))
到
for i,v in sorted(z):
print(v, file=fs)
-
由于
\n
适用于任何数据类型。不需要
str(v)
print
的 end="\n"
默认参数,自动添加