我有一个正确填充的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
似乎是空的。
答案 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
(我没有尝试过这个,但它应该给你这个想法)