在一个函数中反转每一行,但输出结果仍为一行打印

2024-09-28 22:44:05 发布

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

我正在尝试反转多行文件中的每个单词,并将单词打印在同一行上。所以基本上,如果输入的文本是:

I like to run.

Running is fun.

The end.

我希望输出为:

I ekil ot .nur

gninnuR si .nuf

ehT .dne

但它被输出为

I ekil ot .nur gninnuR si .nuf ehT .dne

我的代码是这样的:

f = open(file, "r")    #the input goes here
data = f.read()
for line in data:
    reverse = ' '.join(line[::-1] for line in data.split())

print(reverse)

我怎样才能把它一行一行地打印出来?谢谢你的帮助。你知道吗


Tags: 文件infordatalineot单词reverse
3条回答

在新行上拆分后再次加入。如果不使用for循环并选择单个循环:

s = """I like to run.

Running is fun.

The end."""
rev = "\n".join(' '.join(sb[::-1] for sb in sub.split(' ')) for sub in s.split('\n'))

现在rev看起来像您期望的输出:

I ekil ot .nur

gninnuR si .nuf

ehT .dne

您应该首先将行按.split("\n")拆分,然后将行中的每个单词反转并重新连接。你知道吗

data = f.read()
for line in data.split("\n"):
    print (' '.join([l[::-1] for l in line.split()]))

输出:

I ekil ot .nur 
gninnuR si .nuf 
ehT .dne

您需要在\n上拆分才能对每一行进行操作。您的代码当前对包含空格和换行符的空格(默认情况下)执行拆分,这就是为什么要将所有单词放在一行上的原因。你知道吗

只需使用readlines()方法,它已经在文件中的行上提供了一个列表,如下所示:

with open('file', 'r') as f:
     data=f.readlines()
     for line in data:
             print(' '.join(word[::-1] for word in line.split()))

下面是输出:

I ekil ot .nur
gninnuR si .nuf
ehT .dne

相关问题 更多 >