愚蠢的例子,我想做类似
的事情X=println("hi"),
并获取
X="hi".
答案 0 :(得分:3)
我认为海报想要访问可以从println获得的精彩摘要格式。作为字符串访问它的一种方法是使用print写入缓冲区,然后将其作为字符串读回。可能还有一种更简单的方法。
using DataFrames
data = DataFrame()
data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman", "Batman", "Bob", "Adam"]
data[:mealType] = ["bug", "worm", "worm", "bug", "worm", "worm", "stick"]
stream = IOBuffer()
println(data)
print(stream, data)
yourString = takebuf_string(stream)
返回
"7x2 DataFrame\n| Row | turtle | mealType |\n|-----|----------|----------|\n| 1 | \"Suzy\" | \"bug\" |\n| 2 | \"Suzy\" | \"worm\" |\n| 3 | \"Bob\" | \"worm\" |\n| 4 | \"Batman\" | \"bug\" |\n| 5 | \"Batman\" | \"worm\" |\n| 6 | \"Bob\" | \"worm\" |\n| 7 | \"Adam\" | \"stick\" |"
答案 1 :(得分:3)
一般解决方案是使用上面@ARM所述的IOBuffer
和takebuf_string
。如果它足以捕获print
的输出,那么
s = string(args...)
给出了由print(args...)
打印的字符串。此外,
s = repr(X)
给出了由showall(X)
打印的字符串。两者都是在内部使用IOBuffer
和takebuf_string
实现的。
答案 2 :(得分:2)
如果您使用的是格式化字符串,则可以使用@sprintf
。
julia> x = @sprintf("%s", "hi")
"hi"
julia> x
"hi"
julia> x = @sprintf("%d/%d", 3, 4)
"3/4"
虽然这是一个宏,但要小心