在文本中交换行

时间:2012-06-01 13:23:56

标签: python linux line swap

如何更改:

fv (x,y,z) begin  print x;;;  print y ;;; return x + y + z end;

x = fv(2,34,5)

g (x) begin y = x + 45 ;;;  return y end;

z = g(23)

r = 53

h (x,y,z,r) begin  print x;;;  print y ;;; print z;;;print r;;;return x + y + z end;

对此:

def fv (x,y,z) :    
    print x   
    print y   
    return x + y + z 

x = fv(2,34,5)

def g (x) :  
    y = x + 45  
    return y 

z = g(23)

r = 53

def h (x,y,z,r) :   
    print x   
    print y   
    print z   
    print r   
    return x + y + z

我不是要求完整的代码或做我的作业,我只需要建议和/或样本或方向如何做到这一点。

5 个答案:

答案 0 :(得分:3)

因为你只是在寻找起始提示,这可能是作业......

对各种line-enders(例如“begin”,“;;;”,“end;”)执行replace(),将它们转换为“\ n”,其中一行可能为“:”。

将生成的文本拆分为.split(“\ n”)

走线以调整线前缀(“def”,缩进)

使用“\ n”.join(...)

将线条重新组合在一起

编写输出文本

答案 1 :(得分:1)

这可以让你开始

for line in code:
    line = line.replace( "begin", " :\n" + " " * 4 ).replace( ";;;", "\n" + " " * 4 ).replace( "end;", "\n" + " " * 4 )

答案 2 :(得分:0)

例如,查看sed命令行工具。知道你希望/允许使用哪些工具有点难......

答案 3 :(得分:0)

嗯,对于您open()文件的初学者,请使用其readlines()方法将其放入字符串列表中。

从那里你可以遍历该列表并使用split(";;;")方法的组合或来自re模块的更复杂的字符串。

答案 4 :(得分:0)

这可能有点矫枉过正,但请看一下Ply解析器项目。您将需要了解正则表达式和Backus Naur格式。

Ply parser