开发者

python string assignment

开发者 https://www.devze.com 2023-02-08 03:41 出处:网络
I have a StringIO object the is filled correctly. I than have the following code: val = log_fp.getvalue()

I have a StringIO object the is filled correctly. I than have the following code:

val = log_fp.getvalue()
lines = val.split('\n') 
newval 开发者_如何学Go= ''
for line in lines:
    if (not line.startswith('[output]')):
        newval = line   
        print 'test1'+newval    
print 'test2' +newval

in the loop, I have the correct value for newval printed, but in the last print, I have an empty string. Any ideas what I am doing wrong? What I need is to extract one of the lines in the stringIO object that is marked [output], but newval seems to be empty in 'test2'.


Splitting on '\n' for a string such as 'foo\n' will produce ['foo', ''].


What I need is to extract one of the lines in the stringIO object that is marked [output],

Untested:

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

Then get the first element of output_lines, if that is what you need.


Is log_fp a text file? If so, the last value in lines will be everything after the last newline character. Your file probably terminates in a newline, or a newline and some whitespace. For the former case, the last value of line will be an empty string. For the latter case, the last value of line will be the whitespace.

To avoid this, you could add a new clause to the if statement to check the trimmed string is not empty, eg.

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

(I haven't tried running this, but it should give you the idea)

0

精彩评论

暂无评论...
验证码 换一张
取 消