簡體   English   中英

python3打印到字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM