将函数打印输出分配给字符串变量
Posted
技术标签:
【中文标题】将函数打印输出分配给字符串变量【英文标题】:Assigning function print output to string variable 【发布时间】:2016-04-08 09:14:49 【问题描述】:我有以下函数,它遍历两个列表并打印出选择的蔬菜和水果。
def Selection():
print("VEGETABLES FOR THE WEEK:\n")
for veg in veg_selection:
print(veg.upper())
print("\n")
print("FRUITS FOR THE WEEK:\n")
for fruit in fruit_selection:
print(fruit.upper())
所以结果可能如下所示:
VEGETABLES FOR THE WEEK:
BROCOLLI
PEAS
CARROTS
SWEET CORN
WHITE ONIONS
FRUITS FOR THE WEEK:
GRAPEFRUIT
CHERRIES
ORANGE
COCONUT
RASPBERRIES
我正在努力将函数的打印结果分配给包含格式化字符串的单个变量。我是否需要将结果保存为文本文件,然后再次读取?我可以只使用文本连接吗?我不确定如何处理函数中的 for 循环?任何帮助都非常感谢。
【问题讨论】:
【参考方案1】:其中一种解决方案是将所有迭代字符串存储到容器中,然后将它们存储在join 中。引用文档:
string.join(words[, sep])
将单词列表或元组与中间出现的 sep 连接起来。 sep 的默认值是一个空格字符。string.join(string.split(s, sep), sep)
等于 s 总是正确的。
所以示例代码如下所示:
import os
def selection():
strings = []
strings.append("VEGETABLES FOR THE WEEK:\n")
for veg in veg_selection:
strings.append(veg.upper())
strings.append("\n")
strings.append("FRUITS FOR THE WEEK:\n")
for fruit in fruit_selection:
strings.append(fruit.upper())
return os.linesep.join(strings)
s = selection() # s now contains output string, and nothing is printed
print(s) # print whole string at once
os.linesep
是具有正确换行符的跨操作系统常量。
用于分隔(或者更确切地说,终止)行的字符串 当前平台。这可能是单个字符,例如 '\n' 表示 POSIX 或多个字符,例如 Windows 的 '\r\n'。不要 在编写以文本形式打开的文件时,使用 os.linesep 作为行终止符 模式(默认);在所有平台上都使用单个 '\n'。
另外,半相关的问题:Good way to append to a string。
【讨论】:
【参考方案2】:可能最简单的方法是添加一个额外的步骤,将文本附加到您需要的变量中。见下文:
def Selection():
output_text = "VEGETABLES FOR THE WEEK:\n"
print("VEGETABLES FOR THE WEEK:\n")
for veg in veg_selection:
output_text += veg
print(veg.upper())
output_text += "\n"
print("\n")
output_text += "FRUITS FOR THE WEEK"
print("FRUITS FOR THE WEEK:\n")
for fruit in fruit_selection:
output_text += fruit
print(fruit.upper())
您可以更改代码以在末尾输出 output_text 字符串,而不是打印每一行。
【讨论】:
【参考方案3】:您可以像这样连接到单个字符串变量:
def Selection():
output = "VEGETABLES FOR THE WEEK:\n"
for veg in veg_selection:
output += veg.upper() + "\n"
output += "\nFRUITS FOR THE WEEK:\n"
for fruit in fruit_selection:
output += fruit.upper() + "\n"
然后您可以通过添加到末尾来直接打印字符串:
print(output)
或通过在末尾添加返回字符串以供其他地方使用:
return output
【讨论】:
【参考方案4】:把你的函数变成生成器:
def Selection():
yield "VEGETABLES FOR THE WEEK:\n"
for veg in veg_selection:
yield veg.upper()
yield "\n"
yield "FRUITS FOR THE WEEK:\n"
for fruit in fruit_selection:
yield fruit.upper()
那么,转成字符串就很简单了:
'\n'.join(Selection())
打印结果:
for line in Selection():
print(line)
【讨论】:
以上是关于将函数打印输出分配给字符串变量的主要内容,如果未能解决你的问题,请参考以下文章
我正在使用来自 python 的 powershell 命令获取一些数据,而 Windows 中没有 cmd!如何将此输出分配给字符串变量?