2015-09-19 3 views
2

Например, у меня есть файл так:`.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) 

Теперь моя проблема: Как сэкономить пространство?

ответ

2

можно разделить на основе ' ' (пространства, вместо 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() 

Demo -

С кодом ФП в -

←[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 
+0

здорово! большое спасибо :) –

Смежные вопросы