[英]python3 print to string
使用 Python 3,我有一個要移植到 GUI 的控制台應用程序。 該代碼有一堆打印語句,如下所示:
print(f1(), f2(), f3(), sep=getsep(), end=getend())
我想將這些調用轉換為:
GuiPrintLine(f1(), f2(), f3(), sep=getsep(), end=getend())
最終使用某些(未定義的)GUI框架呈現每一行。
如果我可以將 arguments 轉換為 print 通常會產生的字符串,而沒有實際打印到 sysout 的副作用,這很容易做到。 換句話說,我需要這樣的 function:
s = print_to_string(*args, **kwargs)
如何將一組參數格式化為 print(...) 生成與 print() 產生的 output 相同的單個字符串?
我意識到我可以通過將所有 args 與 sep 和 end 連接起來來模擬 print,但如果有的話,我更願意使用內置的解決方案。
使用打印和重定向 sysout 沒有吸引力,因為它需要修改應用程序的全局 state,並且 sysout 可能同時用於其他診斷。
看起來這在 Python 中應該是微不足道的,所以也許我只是遺漏了一些明顯的東西。
謝謝你的幫助!
通過字符串 io 找到答案。 有了這個,我不必模擬 Print 對 sep/end 的處理,甚至不必檢查是否存在。
import io
def print_to_string(*args, **kwargs):
output = io.StringIO()
print(*args, file=output, **kwargs)
contents = output.getvalue()
output.close()
return contents
我的解決方案:
def print_to_string(*args, **kwargs):
newstr = ""
for a in args:
newstr+=str(a)+' '
return newstr
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.