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

Python 如何将文件中的行连接到一行代码上?,python,Python,我是编程新手,目前正在解决这个问题,我想增加读取文件的能力,并根据给定的缩进格式对其进行格式化。我当前的代码: 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')

我是编程新手,目前正在解决这个问题,我想增加读取文件的能力,并根据给定的缩进格式对其进行格式化。我当前的代码:

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

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

您的
缩进
字符串以换行结束,如下所示:
“\n”
。你想摆脱它

indents=f.readline().strip('\n')
从文本文件中读取时,在到达文件末尾之前,每行末尾都会有一个换行符

默认情况下,
print()
还将向其输出中添加一个换行符。如果不希望这样,可以传递一个
end
参数

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

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

indents=f.readline().strip('\n')
从文本文件中读取时,在到达文件末尾之前,每行末尾都会有一个换行符

默认情况下,
print()
还将向其输出中添加一个换行符。如果不希望这样,可以传递一个
end
参数

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

只需在程序中使用多行字符串作为输入。 inputBasicCode=“” … “” 这是一种更简单、更清晰的程序输入方法。非常适合调试。专注于目标。


只需在程序中使用多行字符串作为输入。 inputBasicCode=“” … “” 这是一种更简单、更清晰的程序输入方法。非常适合调试。专注于目标。

您的语句
打印(缩进*块+行)
固有地在末尾添加一个新行字符。因为python“print”语句添加了换行符,而不管print命令中的内容是什么。 在print语句的末尾添加一个逗号,就像这样
print(缩进*块+行,)
,它将不会打印换行符。

您的语句
print(缩进*块+行)
固有地在末尾添加一个新行字符。因为python“print”语句添加了换行符,而不管print命令中的内容是什么。
在print语句的末尾添加一个逗号,就像这样
print(缩进*块+行,)
它不会打印换行符。

文件的输入是什么?我觉得有代码丢失了。另外,可以举一个小的例子。你的文件的输入是什么?我觉得有代码丢失了。另外,也许可以举一个小的例子。非常感谢,这让我很难受哈哈。非常感谢,这让我难受哈哈。谢谢RJM,你在这个问题上是对的,但这个解决方案对我不起作用。@lzzino还有另一种方法可以抑制换行符,请尝试
打印(缩进*块+行,结束=”)
,这将以空格而不是换行符结束
print
语句。谢谢RJM,你在这个问题上是对的,但这个解决方案对我不起作用。@lzzino还有另一种方法可以抑制换行符,请尝试
print(缩进*块+行,end=“”)
,这将以空格而不是换行符结束
print
语句。