Python函数赋值时输出打印异常:如何将输出存入变量并替换换行符
搞定你的Python函数输出存变量问题
嘿,我一眼就看出问题出在哪啦!你的代码有两个核心问题,导致没法把函数输出存到变量里:
- 你的
printWithoutNewlines()函数直接用print语句把内容打出来了,而不是把这些内容收集起来返回给调用者 - 函数没有
return语句,所以调用它的时候,默认返回的是None——你把None赋值给了functionsOutput,后面的replace操作自然啥用都没有
来,咱们一步步改好它:
第一步:让函数返回内容,而不是直接打印
把原来的print改成把处理后的内容收集起来,最后用return返回。这里给你两种写法,看你需求选:
写法一:直接生成无换行的字符串(一步到位)
#!/usr/bin/python2.7 mylist = [ "hello", "you", "are", "so", "cool" ] def printWithoutNewlines(): processed_items = [] for item in mylist: # 替换hello为hi modified_item = item.replace('hello', "hi") processed_items.append(modified_item) # 用空格把所有元素连起来,直接得到无换行的字符串 return ' '.join(processed_items)
写法二:先保留换行,之后再替换成空格
如果你想先按原来的逻辑生成带换行的内容,再替换,就这么写:
def printWithoutNewlines(): result_str = '' for item in mylist: modified_item = item.replace('hello', "hi") result_str += modified_item + '\n' # 每个元素后加换行 return result_str.rstrip('\n') # 去掉最后多余的那一个换行
第二步:正确赋值并处理换行
现在调用函数就能拿到实际的内容了,再处理换行:
# 调用函数获取结果 functionsOutput = printWithoutNewlines() # 如果用的是写法二,就执行替换(写法一已经是空格分隔了,不用这步) functionsOutput = functionsOutput.replace('\n', ' ') # 现在可以打印看看结果啦 print(functionsOutput)
再掰扯清楚为啥原来的代码不行
- 当你调用
printWithoutNewlines()时,函数里的print会直接把内容输出到控制台,这些内容根本不会传到functionsOutput里 - 因为函数没有
return语句,Python会默认让它返回None——你把None赋值给了变量,而None是没有replace方法的(Python2.7里可能不会报错,但绝对不会有你想要的效果)
这样改完,你就能顺利把函数结果存到变量里,再处理换行符啦!
内容的提问来源于stack exchange,提问作者swenson
相关产品推荐
相关产品推荐

