所以我正在编写一个代码来读取文本并在屏幕上以相反的顺序输出单词,这意味着原始文本是
hello world
how are you
为:
you are how
world hello
我让它部分工作,问题是它在一个列中输出它,但我希望它在行中。
代码是
for a in reversed(list(open("text.txt"))):
for i in a:
a = i.split()
b = a[::-1]
final_string = ''
for i in b:
final_string += i + ' '
print(final_string)
答案 0 :(得分:7)
你有一个循环太多了:
for a in reversed(list(open("text.txt"))):
for i in a:
第一个循环以相反的顺序生成文件中的行,因此a
绑定到每一行。第二个for
然后遍历该行中的每个字符。然后你继续“反向”#39;该字符(或该字符是空格或换行符时的空列表)。
您已经在使用reversed
作为文件,也可以将它用于行;将其与str.join()
:
for line in reversed(list(open("text.txt"))):
words = line.split()
reversed_words = ' '.join(reversed(words))
print(reversed_words)
或者更简洁地说:
print(*(' '.join(l.split()[::-1]) for l in reversed(list(open('text.txt')))), sep='\n')
演示:
>>> with open('text.txt', 'w') as fo:
... fo.write('''\
... hello world
... how are you
... ''')
...
24
>>> for line in reversed(list(open("text.txt"))):
... words = line.split()
... reversed_words = ' '.join(reversed(words))
... print(reversed_words)
...
you are how
world hello
>>> print(*(' '.join(l.split()[::-1]) for l in reversed(list(open('text.txt')))), sep='\n')
you are how
world hello