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

2024-01-29

为什么 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","") 不会导致问题被纠正,但有人知道为什么会发生?

- 编辑 - 哦!抱歉,确切地说,我的意思是执行。出现回车是因为我正在通过 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只处理表达式(一个裸表达式is也是一个声明,所以exec可以处理它以及其他语句)。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python eval 函数中的 \r\n 与 \n 的相关文章

随机推荐

  • mat-paginator 更改 mat-paginator-range-label 的放置

    我有一个简单的mat table with mat paginator By default design it looks like this 我想更改范围标签的放置并将其放在导航按钮之间 如下所示 基本上 我需要移动div mat pa
  • 如果执行的 JavaScript 进入无限循环,Android WebView 将进入不可恢复状态

    如果执行的 JavaScript 代码陷入无限循环 Android WebView 小部件似乎会进入不可恢复的状态 例如这个网页就会导致这个问题 Failure Test 只需使用 WebView 在任何 Android 浏览器中输入以下
  • R 连接到 sqlite

    我无法从 R 连接到 sqlite Sqlite3 安装在 Linux 服务器上并且能够创建 修改 但 R 未连接 library dplyr library RSQLite gt db lt src sqlite my db sqlite
  • 后台线程上的领域通知令牌

    我试图在后台线程上获取领域数据并添加通知块 iOS Swift 基本示例 func initNotificationToken DispatchQueue global qos background async let realm try
  • React-leaflet:添加 TopoJSON 层

    我刚刚开始使用 React leaflet 库并获得了一个要加载 geoJSON 层的地图 但是我想使用 TopoJSON 层 我知道这样的纯传单是可能的 https gist github com rclark 5779673 https
  • Visual Studio 解决方案中建议的项目数量

    我们正在开始开发新的应用程序 其中包括大约 12 名开发人员在 MS Visual Studio 中使用 C 开发的 30 50 个项目 我正在致力于应用程序模块的组件化 以支持架构并实现并行工作 我们争论 我们应该有多少种解决方案 有人声
  • ORM 和层

    很抱歉这一点在这里到处都是 但我感觉就像一只狗在追我的尾巴 此时我很困惑 我试图找到开发 3 层解决方案 IL BL DL 的最简洁方法 其中 DL 使用 ORM 来抽象对数据库的访问 在我见过的所有地方 人们都使用 LinqToSQL 或
  • Java 游戏引擎 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近一直在研究游戏开发 我的第一个编程语言是 Java 在玩过许多用 C 开发的令人惊叹的游戏后 我想知道为什么 Java 在游戏行
  • 如何在Github上托管gem并使用它?

    我已将私有 gem 文件添加到新存储库中here https github com praveenitmec testgem但是当我尝试将它添加到我的 gem 文件中时 gem test gem git gt https github co
  • jQuery 禁用链接

    任何人都知道如何禁用 jquery 中的链接而不使用return false 具体来说 我想要做的是禁用某个项目的链接 使用 jquery 执行单击它会触发一些内容 然后重新启用该链接 以便再次单击它时它会默认工作 谢谢 戴夫 UPDATE
  • 有关 python ImportError 的更多信息,没有命名的模块

    遵循建议here https stackoverflow com questions 338768 python importerror no module named 我的包 或包含我的模块的目录 位于 C Python34 Lib si
  • 如何从 C# 导入和使用非托管 C++ 类?

    我有一个本机 C dll 一些头文件和导入库 有没有办法在 C 中实例化 dll 中定义的对象 我知道的两种方法是 将 C 代码包装到 COM 中 使用 DLLImport 和外部 C 函数 C CLI 是您的朋友 不过 您会遇到一个问题
  • Python 日志记录:传播低于当前记录器级别的消息

    我想记录特定记录器名称 特定级别及更高级别的消息 例如INFO及以上 到特定的日志处理程序 例如文件处理程序 同时仍然将所有日志消息发送到控制台 Python 的版本是 2 7 到目前为止我尝试的是创建两个记录器 根记录器 命名记录器 对于
  • 忽略来自 Google Closure 中一个文件的编译器警告

    我在一个相当大的 Closure 项目中使用外部库 Phonegap 不幸的是 Phonegap 生成了大量编译器警告 所有 危险使用 这足以让我在编译器输出中搜索有关我自己的代码的警告变得非常烦人 有没有一种方法可以仅消除一个文件中的警告
  • 每当使用除法时,C 程序中的计算结果总是为 0

    我使用两个不同的变量来除以来自的变量int and double 当我使用类似以下内容时 这些工作正常 int cost cost 40 cost cost 400 20 2 为此 该方法工作正常 我得到了正确的结果 即4 但是当我使用变量
  • 常见 C++ 优化技术列表 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 仅针对特定服务的拦截器

    我的应用程序中有多个指向不同 API URL 的服务 现在我需要为每个服务设置不同的标头 我现在的问题是关于 Angular 4 中的新拦截器 是否可以为特定服务设置一个拦截器 那么每个服务都有其特定的拦截器 希望你们能明白我的问题 TL
  • 删除填充或强制拟合或删除方形矢量资源中的空白空间以适合矩形按钮?

    我正在尝试调整all inclusive svg 图像 https material io resources icons icon all inclusive到我的矩形按钮 形状本身也是矩形 但矢量资源是正方形 24x24 形状上方和下方
  • 如何将所需的验证器添加到ajax AsyncFileUpload?

    如何将客户端所需的验证器添加到 asyncfileupload 以强制用户在提交页面之前选择文件 您还可以使用 C 或 VB 而不是客户端 Javascript 或 JQuery 函数 在服务器端方法中设置隐藏文本框的文本 protecte
  • python eval 函数中的 \r\n 与 \n

    为什么 eval 函数不能与 r n 一起使用 而可以与 n 一起使用 例如 eval for i in range 5 r n print hello 不起作用 eval for i in range 5 n print hello 有效