我在文本文件中有以下格式的数据。第一行表示时间步长。第一列表示位置,接下来的四列表示该位置的不同值。
0.017
1 0.11 0.40 0.02 0.73
2 0.86 0.86 0.30 0.25
3 0.95 0.20 0.50 0.71
4 0.68 0.93 0.07 0.78
5 0.65 0.80 0.75 0.46
6 0.16 0.37 0.89 0.69
7 0.22 0.50 0.66 0.63
8 1.00 0.17 0.95 0.65
9 0.12 0.45 0.56 0.05
10 0.67 0.73 0.48 0.33
0.034
1 0.19 0.91 0.11 0.69
.
.
.
我需要在新的文本文件中使用以下格式。
TS 1 0.017
1
2
3
4
5
6
7
8
9
10
0.11
0.86
0.95
0.68
0.65
0.16
0.22
1.00
0.12
0.67
TS 1 0.034
1
.
.
0.19
我需要每次在第一行的时间步骤中添加“TS 1”。然后,我需要按顺序列出所有位置(在这种情况下为1-10),然后按照与下面位置相同的顺序列出第2列中的值。
我需要这个迭代多个时间步骤,直到文本文件的末尾可以是数百万行。我希望在Excel中使用Python或VBA完成此操作。关于如何开始的任何想法?
答案 0 :(得分:0)
#!/usr/bin/env python
# coding: utf-8
import re
SPACE = re.compile(ur'\s+')
def write_rows(f, rows):
if rows:
for row in rows:
f.write(row[0])
f.write('\n')
for row in rows:
f.write(row[1])
f.write('\n')
with open('in.txt', 'r') as fi:
with open('out.txt', 'w') as fo:
rows = []
for line in fi:
bits = SPACE.split(line.strip())
if len(bits) == 1:
write_rows(fo, rows)
fo.write('TS 1 ')
fo.write(bits[0])
fo.write('\n')
rows = []
else:
rows.append(bits)
write_rows(fo, rows)