2014-11-21 2 views
-3

Я пытаюсь в течение некоторого времени перебирать список строк и удалять первое слово строки, добавляя оставшиеся строки строка в другой список, вот что я писал:Итерация по списку строк и добавление всех строк в другие, кроме первого слова

from sys import argv 

my_file = argv[1] 
output_list = [] 
count = 1 

with open(my_file) as input_file: 
    for line in input_file.readlines(): 
     while count < len(line.split(' '): 
      ouput_list.append(line.split(' ')[count]) 
      count += 1 
     count = 0 

with open('out_file.txt', 'w') as output_file: 
    for line in output_list: 
     output_file.write(line) 

Все вроде на месте, но я получаю ошибку синтаксиса ... Что я упускаю?

Заранее благодарен!

+1

По крайней мере, скажите нам, что ошибка синтаксиса вы получаете. –

+2

вы пропустили закрытие 'len (line.split ('')' закройте его, и у вас есть другие проблемы тоже в вашем rog. –

ответ

1

Имеются две ошибки синтаксиса. Во-первых, есть отсутствует правая скобка в этой строке:

while count < len(line.split(' '): 

Во-вторых, вы неправильно написанного output_list в этой строке:

ouput_list.append(line.split(' ')[count]) 

Помимо этого, ваш код, кажется логически некорректной, поскольку она удаляет все пробелы между словами.

Если ваша цель состоит в том, чтобы удалить самое первое слово файла и пробелы вокруг него, оставляя все остальное, неповрежденные, эти две строки должны сделать трюк:

text = open(my_file).read() 
text = re.sub('^\s*\w+\s*', '', text) 

Он также может быть записано в одна строка, но я предпочитаю две строки для ясности.

Вам потребуется re модуль, так что ваша полная программа будет выглядеть следующим образом:

import sys, re 

my_file = sys.argv[1] 

text = open(my_file).read() 
text = re.sub('^\s*\w+\s*', '', text) 

with open('out_file.txt', 'w') as output_file: 
    output_file.write(text) 

Если вы используете этот входной файл:

ant bear cat 
dog elephant 

Вы получите этот результат:

bear cat 
dog elephant 

Я полагаю, это то, что вы хотели.

-1

Это работает код: -

from sys import argv 

my_file = argv[1] 
output_list = [] 
count = 1 

with open(my_file) as input_file: 
    for line in input_file.readlines(): 
     while count < len(line.split()): 
      output_list.append(line.split()[count]) 
      count += 1 
     count = 0 

with open('out_file.txt', 'w') as output_file: 
    for line in output_list: 
     output_file.write(line+'\n') # should write in new line 
+0

Возможно, это было бы полезно для OP, если бы вы объяснили, что вы изменили, и почему – jonrsharpe

+0

@jonrsharpe благодарит за Рассмотрение. @ March0514S Вы пропустили закрытие круглых скобок, как я упомянул в комментарии 'len (line.split())' и неправильно назвал здесь 'ouput_list.append' свой' ouput_list'. Вам лучше использовать 'split()', а расщепление над пробелами чем 'split ('')' и вставлять данные в новую строку или с некоторым пространством, так что 'output_file.write (строка + '\ n')' или 'output_file.write (строка + '\ t')' –

+1

... в ответ. – jonrsharpe

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