我尝试使用r中的rPython执行以下命令。当适当定义变量时,各个行在Python中运行良好。我已经意识到它可能是逃避双引号的问题,但我不清楚如何修复它。
fname <- "some string"
rPython::python.assign("fstr", fname)
rPython::python.exec("print(fstr)")
这可以在R控制台中正确打印,因此让Python了解fstr
的值不是问题。
rPython::python.exec("f = open(fstr+'_d.txt','r')")
# some lines in f contain the word "leaf" and also contain a character string in double quotes; if "leaf" is on a given line, I would like to extract that character string to a list
rPython::python.exec('matched_lines = [line.split("\"")[1] for line in f.readlines() if \"leaf\" in line]')
rPython::python.exec("f.close()")
rPython::python.exec("print(matched_lines)") # returns the expected output
# and then I'd like to write it to a file.
rPython::python.exec("f = open(fstr+'_d_char.txt','wb')")
rPython::python.exec("f.write('\n'.join(matched_lines))")
这是错误:
File "<string>", line 2
f.write('
^
SyntaxError: EOL while scanning string literal
我一直在尝试以各种方式逃避这句话,模仿我早期的问题&#34; leaf,&#34;但收效甚微。
我想在R中找到一种方法来做同样的操作,但我很好奇为什么这个,特别是不起作用。
答案 0 :(得分:0)
有多个问题。问题不仅在于逃避报价,还在于我未能逃脱换行。正确的代码是
rPython::python.exec("f.write(\'\\n\'.join(matched_lines))")