Python `.split()`如何节省多个空间?

Python `.split()`如何节省多个空间?,python,Python,例如,我有一个文件,如下所示: while True: if test = 10: print(a, b) 现在我写了一个脚本来读取那个文件,然后…用随机颜色打印所有单词。这是我的密码: color = [color for color in range(91, 97)] with open(sys.argv[1], 'r') as f: for i in f.readlines(): for w in i.split():

例如,我有一个文件,如下所示:

while True:
    if test = 10:
        print(a, b)
现在我写了一个脚本来读取那个文件,然后…用随机颜色打印所有单词。这是我的密码:

color = [color for color in range(91, 97)]
with open(sys.argv[1], 'r') as f:
    for i in f.readlines():
        for w in i.split():
            print('\033[{0}m{1}\033[{0};m'
                  .format(random.choice(color), w), end='')
            print(' ', end='')
        print()
当然,它起作用了。但是
.split()
没有保存所有空格,因此输出没有缩进:

while True 
if test = 10: 
print(a, b) 

现在我的问题是:如何节省空间?

您可以基于
'
(空格,而不是
None
,它被所有空格分割),并且仅在包含除空格以外的任何内容时才打印单词(要做到这一点,您只需检查
w.strip()
是否为空字符串即可)。例如-

import random
import sys
color = [color for color in range(91, 97)]
with open(sys.argv[1], 'r') as f:
    for i in f:
        for w in i.rstrip().split(' '):
            if w.strip():
                print('\033[{0}m{1}\033[{0};m'
                      .format(random.choice(color), w), end='')
            print(' ', end='')
        print()

演示-

用OP的代码-

←[91mwhile←[91;m ←[92mTrue:←[92;m
←[96mif←[96;m ←[92mtest←[92;m ←[95m=←[95;m ←[95m10:←[95;m
←[92mprint(a,←[92;m ←[93mb)←[93;m
与上述建议的变化-

←[93mwhile←[93;m ←[93mTrue:←[93;m
    ←[94mif←[94;m ←[93mtest←[93;m ←[91m=←[91;m ←[94m10:←[94;m
        ←[91mprint(a,←[91;m ←[96mb)←[96;m