python字符串赋值

时间:2011-02-03 15:55:00

标签: python string

我有一个正确填充的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]的一行,但{test1'中的newval似乎是空的。

3 个答案:

答案 0 :(得分:4)

'foo\n'之类的字符串'\ n'进行拆分会生成['foo', '']

答案 1 :(得分:1)

  

我需要的是提取其中一个   stringIO对象中的行是   标记为[输出],

未测试:

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

然后获取output_lines的第一个元素,如果这是你需要的那个。

答案 2 :(得分:0)

log_fp是一个文本文件吗? 如果是这样,行中的最后一个值将是最后一个换行符之后的所有内容。您的文件可能终止于换行符,换行符和一些空格。 对于前一种情况,line的最后一个值将是一个空字符串。 对于后一种情况,line的最后一个值将是空格。

为避免这种情况,您可以在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

(我没有尝试过这个,但它应该给你这个想法)