Python2.*:如何将print语句的输出捕获到变量(而不是文件),以便传递给pandaps数据框查询()功能

2024-09-28 22:17:34 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:解决方案!!!

事实证明,我需要做的就是df.query('{}'.format(eval(queryStr))),Python将queryStr视为与print(queryStr)相同。我不建议一直使用eval,但在这种情况下,这是目前为止我能找到的最好的解决方案。在

原始问题:

我有一个字符串(queryStr):

>>> queryStr
"'(1522000002801<=TIMESTAMP<=1522000034174 or
1522000048441<=TIMESTAMP<=1522000074589) and (RESOURCE==\\'GTEX\\' or
RESOURCE==\\'MOD_FLYBASE\\') and (ACTIVITY==\\'REQ_RESOURCE\\')'"

(注意反斜杠——有2个)

当我打印它时,queryStr,我得到:

^{pr2}$

哪一个反斜杠--正是我想传递给df.query()的内容。在

因为当我运行df.query(queryStr)

(用两个反斜杠运行df.query()),我得到一个错误。但当我跑的时候:

df.query('(1522000002801<=TIMESTAMP<=1522000034174 or 1522000048441<=TIMESTAMP<=1522000074589) and (RESOURCE==\'GTEX\' or RESOURCE==\'MOD_FLYBASE\') and (ACTIVITY==\'REQ_RESOURCE\')')

df.query()带1个反斜杠)

我得到了我想要的:

       TIMESTAMP  NODE  ID  REFID  USER      ACTIVITY     RESOURCE
1  1522000016966     1   3      3     6  REQ_RESOURCE  MOD_FLYBASE
4  1522000024848     1   6      6    10  REQ_RESOURCE         GTEX

所以,我的问题是:

如何捕获print(queryStr)的“output”并将其传递给df.query(),就像它打印出来的那样?在

我知道我可以将print的输出传递到一个文件,然后引入这些行,但我觉得这样做效率极低。

谢谢你!!在

编辑:

请注意,queryStr不是字符串的.__repr__(),因为在第一个和最后一个引号前面会有反斜杠。因此,使用涉及.__repr__()或{}的解决方案是行不通的。我确实需要以某种方式“获取”输出print。在

再次感谢你!在


Tags: orandmoddfactivity解决方案queryreq
1条回答
网友
1楼 · 发布于 2024-09-28 22:17:34

如果您在字符串前面加上'r',它将向Python指明它是一个“原始字符串”,并将在指定字符串时准确地传递字符串

df.query(r"your \query")

这将传递字符串'y'、'o'、'u'、'r'、''、'、'、'、'、'q'、'u'、'e'、'r'、'y',与指定的一个反斜杠完全相同。在

来自Python文档:https://docs.python.org/3/reference/lexical_analysis.html

Both string and bytes literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and treat backslashes as literal characters.

相关问题 更多 >