назначение строки Python - PullRequest
       3

назначение строки Python

2 голосов
/ 03 февраля 2011

У меня есть объект StringIO, который заполнен правильно.У меня есть следующий код:

val = log_fp.getvalue()
lines = val.split('\n') 
newval = ''
for line in lines:
    if (not line.startswith('[output]')):
        newval = line   
        print 'test1'+newval    
print 'test2' +newval

в цикле, у меня напечатано правильное значение для newval, но в последней печати у меня есть пустая строка.Есть идеи, что я делаю не так?Мне нужно извлечь одну из строк в объекте stringIO, помеченном как [output], но newval кажется пустым в 'test2'.

Ответы [ 3 ]

4 голосов
/ 03 февраля 2011

Разделение на '\ n' для строки, такой как 'foo\n', приведет к ['foo', ''].

1 голос
/ 03 февраля 2011

Мне нужно извлечь одну из строк в объекте stringIO с пометкой [output],

Untested:

content = log_fp.getvalue().split()
output_lines = [x for x in content if x.startswith('[output'])]

Затем получитьпервый элемент output_lines, если это то, что вам нужно.

0 голосов
/ 03 февраля 2011

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

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

val = log_fp.getvalue()
lines = val.split('\n') 
newval = ''
for line in lines:
    if ( len(line.strip()) > 0):
        if (not line.startswith('[output]')):
            newval = line   
            print 'test1'+newval    
print 'test2' +newval

(я не пытался запустить это, но это должно дать вам идею)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...