我有一个python脚本,它将一些结果输出到stdin,我想读入R中的一个字符向量。这通常使用system(...,intern=TRUE)
很有效,但是在这种情况下它在逃脱时对我不起作用添加了字符(脚本返回HTML并添加转义字符可能导致格式错误的HTML)。我可以通过将python的输出保存到临时文件并将该文件读入R来解决这个问题,但如果有一个我无法想到的简单修复,我宁愿避免这种情况。这是我的意思的一个例子:
> #f.py is a text file containing
>
> # #!/usr/bin/python
> #
> # html = """
> # <HTML>
> # <p>some content</p>
> # <p> some more content </p>
> # </HTML>"""
> #
> # print html
>
> #the /t, among other escapes, break the html
> v1 <- paste(system("./f.py",intern=TRUE),collapse="")
> v1
[1] "\t\t<HTML>\t\t\t<p>some content</p>\t\t \t<p> some more content </p>\t\t</HTML>"
>
> #this is what I want... but it needs to be saved into an object
> system("./f.py")
<HTML>
<p>some content</p>
<p> some more content </p>
</HTML>
> #or equivalently
> cat(v1)
<HTML> <p>some content</p> <p> some more content </p> </HTML>
>
> #I thought capture.output() would work, but the string still has the escaped characters
> v2 <- capture.output(cat(v1))
> v2
[1] "\t\t<HTML>\t\t\t<p>some content</p>\t\t \t<p> some more content </p>\t\t</HTML>"
答案 0 :(得分:1)
您的代码工作正常,R只是将转义的字符打印为转义符。如果你这样做
cat(paste(system("./f.py", intern=TRUE), collapse=""))
你应该看到你想要的输出。