2016-09-27 2 views
1

У меня есть некоторые вещи, как это в output.txt файлпитон удалить последний запятая

Service1:Aborted 
Service2:failed 
Service3:failed 
Service4:Aborted 
Service5:failed 

выход в 2-й файл (output2.txt):

Service1  Service2 Servive3 Service4  Service5 
Aborted   failed  failed  Aborted  failed 

Хотелось бы, чтобы удалить последнюю запятую линия.

код Я пытаюсь:

file=open('output.txt','r') 
    target=open('output2.txt','w') 
    for line in file.readlines(): 
      line=line.strip() 
      parts=line.split(":") 
      for part in parts: 
       var2=part.strip()+"," 
      target.write(var2.rstrip(','))  # Not working 
    target.close() 
+0

Но вы понимаете отступ 'target.write (var2.rstrip (','))' находится вне цикла for, правильно? –

+1

вместо цикла вы можете сделать '', '. Join (parts) ' – depperm

+0

Удалить последнюю запятую в строке' var2 [: - 1] ' – davedwards

ответ

0

Используйте список и добавить в нее элементы. Доступ к частям [-1] возвращает последний элемент из разделенных частей. Затем с помощью join() поставить запятые между всеми собранными состояниями:

states = [] 
for line in file.readlines(): 
    parts=line.strip().split(':') 
    states.append(parts[-1]) 
print(','.join(states)) 
+0

Я использовал rstrip(), его не wrking почему-то, хотя будет продолжать пытаться. Спасибо – sdrockzz

+0

Я думаю, что это потому, что ваш поток управления неправильный. Пожалуйста, упростите свой пример. Почему вы также разделяете двоеточие, и что это касается минимального кода, который вам нужен для вашего вопроса? – MichielB

+0

Рассмотрим строку 'a, b, a, s, something.' В этом случае мы не будем разделять окончательную запятую после «s». Вопрос заключался не в том, чтобы удалить конечные запятые, а удалить последнюю запятую в строке. – jmercouris

0

Это делает вывод, который вы первоначально запрошенной:

file=open('output.txt','r') 
target=open('output2.txt','w') 
states = [line.strip().split(':')[-1] for line in file.readlines()] 
target.write(','.join(states)) 
target.close() 

То есть, выход этого кода:

Aborted,failed,failed,Aborted,failed 

Для просмотра таблицы, если вывод на вкладке будет выровнен, этот код:

file=open('output.txt','r') 
target=open('output2.txt','w') 
states, titles = [], [] 
for line in file.readlines(): 
    title, state = line.split(':') 
    titles.append(title) 
    states.append(state) 
target.write('\t'.join(titles)) 
target.write('\n') 
target.write('\t'.join(states)) 
target.close() 

будет производить требуемый вид таблицы (обратите внимание, нет запятых в этом выходе):

Service1  Service2 Servive3 Service4  Service5 
Aborted   failed  failed  Aborted  failed 

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

+0

Есть ли способ получить табличный вид, например, я только что отредактировал мой требуемый результат? @BarryPye – sdrockzz

+0

, возможно, вы задали это как новый вопрос, так как ваш ожидаемый результат отличается (не имеет никаких запятых) – BarryPye

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