gpt4 book ai didi

python -\r\n 与 python eval 函数中的\n

转载 作者:太空狗 更新时间:2023-10-30 02:23:51 29 4
gpt4 key购买 nike

为什么 eval 函数不适用于\r\n 而适用于\n。例如eval("for i in range(5):\r\n print 'hello'") 不起作用eval("for i in range(5):\n print 'hello'") 有效

我知道使用 replace("\r","") 没有问题,但有人知道为什么会这样吗?

--编辑--哦!抱歉,我的意思是 exec。出现回车是因为我正在通过 POST 从 HTML 文本区域读取(我在 Linux 机器上)。现在更清楚了,感谢大家。

最佳答案

你对“工作”的定义很奇怪:

>>> eval("for i in range(5):\n print 'hello'")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
for i in range(5):
^
SyntaxError: invalid syntax
>>>

我不确定您为什么要使用 eval -- 我怀疑您的意思是 exec。表达式和语句在 Python 中是截然不同的实体——eval 只处理表达式(一个简单的表达式 也是一个语句,所以 exec 可以处理与它以及其他声明)。

转向 exec,并思考作为 Python 核心提交者的情况,我认为这是一个小的错误设计:就像(冗余和无用的)空格、制表符和换行符之前的表单提要被接受和忽略,回车也应该(同样多余和无用)。我道歉:我想我们从来没有考虑过有人可能想要在那里放回车——但是,有例如那里有表单提要,我们确实接受 that... 所以我认为没有理由拒绝回车(或其他 Unicode 非 ANSI 空格,现在在 Python 3 中我们接受任意 Unicode 非-标识符中的 ANSI 字母数字)。

如果你关心,请在 Python 的问题跟踪器上打开一个问题,并且(除非其他提交者无法预料的反对)我认为我可以通过 Python 3.2 修复它(应该在 12 到 18 个月内发布——这是一个估计[知情猜测],不是 promise ;-)。

关于python -\r\n 与 python eval 函数中的\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1204376/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com