将多行转换为一列,同时跳过以work开头的特定行(在python或shell中)

2024-06-16 11:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的文本文件

GRID   xxxxx   yyyyy   zzzzz
1111    1111    1111    1111    1111
2222    2222    2222    2222    2222
GRID   xxxxx2   yyyyy2   zzzzz2
1111    1111    1111    1111    1111
2222    2222    2222    2222    2222

我想把它变成这样

GRID   xxxxx   yyyyy   zzzzz
1111
1111
1111
1111
2222
2222
2222
2222
GRID   xxxxx2   yyyyy2   zzzzz2
1111
1111
1111
1111
2222
2222
2222
2222

如果能变成这样就太好了

GRID xxxxx yyyyy zzzzz 1 zzzzz 1111 xxxxx yyyyy 2 zzzzz 1111 xxxxx yyyyy 3 zzzzz 1111 xxxxx yyyyy 4 zzzzz 1111 xxxxx yyyyy 5 zzzzz 2222 xxxxx yyyyy 6 zzzzz 2222 xxxxx yyyyy 7 zzzzz 2222 xxxxx yyyyy 8 zzzzz 2222 xxxxx yyyyy GRID xxxxx2 yyyyy2 zzzzz2 1 zzzzz2 1111 xxxxx2 yyyyy2 2 zzzzz2 1111 xxxxx2 yyyyy2 3 zzzzz2 1111 xxxxx2 yyyyy2 4 zzzzz2 1111 xxxxx2 yyyyy2 5 zzzzz2 2222 xxxxx2 yyyyy2 6 zzzzz2 2222 xxxxx2 yyyyy2 7 zzzzz2 2222 xxxxx2 yyyyy2 8 zzzzz2 2222 xxxxx2 yyyyy2

这是很重要的,我这样做,所以任何补充将非常感谢

我试着作为下一个:

https://i.stack.imgur.com/84XiJ.png


Tags: httpscompngstackgridxxxxx文本文件imgur
1条回答
网友
1楼 · 发布于 2024-06-16 11:36:40

[Python]我想这就是你要找的

f = open("testfile.txt",'r')
g = None
x = None
y = None
z = None
count = 0
for line in f:
    if line.startswith("GRID"):
        [g,x,y,z]=line.split()
        count = 1
        print(line.strip())
    else:
        for word in line.split():
            print (str(count),z,word.strip(),x,y)
            count +=1            
f.close()

相关问题 更多 >