如何将文件中的行连接到一行代码?

时间:2016-06-01 21:17:06

标签: python

我是编程新手,目前处理问题#269 from r/dailyprogrammer.我想添加读取文件的能力,并根据给定的缩进格式对其进行格式化。我目前的代码:

import sys

filename=input("What file would you like to reformat?")
f=open(filename,"r")
n_lines= int(f.readline())
indents=(f.readline())

block=0
for line in f:
    line=line.lstrip('·» \t')
    if line.startswith('ENDIF') or line.startswith('NEXT'):
        block-=1
    print(indents*block+line)
    if line.startswith('FOR') or line.startswith('IF'):
        block+=1

给了我这个

VAR I

FOR I=1 TO 31

····
IF !(I MOD 3) THEN

····
····
PRINT "FIZZ"

····
ENDIF

····
IF !(I MOD 5) THEN

····
····
PRINT "BUZZ"

····
ENDIF

····
IF (I MOD 3) && (I MOD 5) THEN

····
····
PRINT "FIZZBUZZ"

····
ENDIF

NEXT

,但我希望它在同一行上打印伪缩进+行。

3 个答案:

答案 0 :(得分:1)

您的indents字符串以换行符结尾,如下所示:" \n"。你想摆脱它。

indents=f.readline().strip('\n')

从文本文件中读取时,每行末尾都会有换行符,直到您到达文件末尾。

默认情况下,

print()也会在其输出中添加一个换行符。如果您不想这样,可以传递end参数。

print('this line doesn't need another newline.\n', end='')

答案 1 :(得分:0)

你的陈述print(indents*block+line)固有地在最后添加了一个新的行字符。由于python“print”语句添加了换行符,无论print命令中有什么内容。 在print语句的末尾添加一个逗号,如print(indents*block+line,),它不会打印换行符。

答案 2 :(得分:-1)

只需在程序中使用多行字符串作为输入。

inputBasicCode =“”“

...

“ “”“

这是一种更简单明了的程序输入方式。非常适合调试。只需专注于目标。

More details of the task is on Reddit.com site