我的代码
with open('base.txt') as infile:
r = [map(float, line.split()) for line in infile]
r1=r[::3]
r2=tuple(r1)
with open('newindex1.txt') as infile:
i = [map(int, line.split()) for line in infile]
a2 = zip(*i)
a11 = a2[0]
a12 = a2[1]
with open('in.txt','w') as file:
for index in range(len(r2)):
file.write(str(a11[index]) + " " + str(a12[index])+ " " + str(r2[index]) + "\n")
输出的几行in.txt
:
0 0 [1.2]
1 0 [1.2]
2 0 [1.2]
3 0 [1.2]
4 0 [1.2]
5 0 [1.2]
6 0 [1.2]
7 0 [1.2]
8 0 [1.2]
9 0 [1.2]
newindex1.txt
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
base.txt
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
1.200000e+00
我已将列表转换为元组。为什么我有括号?如何摆脱它们?
答案 0 :(得分:4)
您正在获取括号,因为您正在将列表(显然是单元素列表)转换为带有str(r2[index])
的字符串。
解决问题的最简单方法是提取唯一元素:将其更改为str(r2[index][0])
。
我还建议您使用字符串模板替换过于钝的str
运算符,使代码不易出错(并且更具可读性)(顺便提一下,允许您control the format你的花车,例如%.2f
)
with open('in.txt','w') as file:
for index in range(len(r2)):
line = "%d %d %f\n" % (a11[index], a12[index], r2[index][0])
file.write(line)
如果你这样做了,并且你不小心忘记了[0]
,你就会得到一个(相当有帮助的)错误:
TypeError: a float is required
您还可以简化输入并将base.txt
读作简单的浮点列表;但是因为你似乎阅读了很多数字矩阵,所以我坚持你的通用方法。 (适用于此,你应该考虑numpy。二维numpy数组就是你需要的东西。)
答案 1 :(得分:0)
列表r
的每个索引都是list
。因此,当您将r2
设置为此处r
中的任何值时:
r1=r[::3]
r2=tuple(r1)
您将r2
设置为包含列表值的元组。列表的str()
将打印带括号的内容。