python 3.4 中使用正则表达式的语法无效

2024-03-20

我在 python 3.4 中使用以下表达式语法错误但相同的代码可以在 python 2.7 中运行

block = re.compile(ur'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)', re.IGNORECASE | re.DOTALL)

我不确定这个表达式的真正问题是什么


Python 3 没有ur'...'原始 unicode 字符串语法。使用r'...'反而:

block = re.compile(
    r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)',
    re.IGNORECASE | re.DOTALL)

如果您需要创建跨 Python 兼容的代码,则必须使用条件代码来解码由r'...' to a unicode仅在 Python 2 上的对象。像这样的模块six http://pythonhosted.org/six/可以提供帮助:

from six import u

block = re.compile(
    u(r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)'),
    re.IGNORECASE | re.DOTALL)

或者您可以创建自己的兼容层;对于本地一次性测试,您可以看看是否有str.decode()方法介绍:

_block_pattern = r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)'
if hasattr(_block_pattern, 'decode'):
    # Python 2, decode to unicode first
    _block_pattern = _block_pattern.decode('ascii')
block = re.compile(_block_pattern, re.IGNORECASE | re.DOTALL)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 3.4 中使用正则表达式的语法无效 的相关文章

随机推荐

  • 如果其他参数为 null,SQL 正确的连接方式

    我有这段代码及其临时表 因此您可以运行它 create table student id int identity 1 1 firstname varchar 50 lastname varchar 50 create table quiz
  • 根据判别器的子集获取判别联合的子集

    打字稿问题 给定一个受歧视的联合类型 interface A discriminator A data string interface B discriminator B data string interface C discrimin
  • 在 R 中使用 download.file 下载时跳过错误文件

    我有大量 pdf 文件的链接 我想在 for 循环中使用 download file 下载这些文件 我的解决方案工作正常 但在遇到错误时停止 许多文件不起作用 我想在 download file 函数中添加一个功能 告诉 R 在下载产生错误
  • 如何强制 Rails ActiveRecord 提交事务刷新

    是否可以强制 ActiveRecord 推送 刷新事务 或只是保存 创建 我有一个时钟工作人员 它在后台为多个任务工作人员创建任务 问题是 时钟工作人员有时会在时钟工作人员信息完全刷新到数据库之前创建一个任务并将其推送给任务工作人员 这会导
  • Linux 中上下文切换需要多长时间?

    我很好奇在 Linux 中更改上下文需要多少个周期 我专门使用 E5405 Xeon x64 但我也很想看看它与其他平台的比较 有一个名为 LMBench 的免费应用程序 由 Larry McVoy 和朋友编写 它提供了一系列操作系统和硬件
  • 初始化词汇表外 (OOV) 标记

    我正在为 NLP 任务构建 TensorFlow 模型 并且使用预训练的 Glove 300d 词向量 嵌入数据集 显然 有些标记无法解析为嵌入 因为它们没有包含在词向量嵌入模型的训练数据集中 例如罕见的名字 我可以用 0 向量替换这些标记
  • 无法验证 的证书,因为它不包含任何 IP SAN

    我正在开发一个 GitLab CI 管道 它将部署我的 docker 堆栈 我正在尝试将 DOCKER HOST 设置为tcp DROPLET IP 2377 但我收到一条错误消息 指出我的证书不包含任何 IP SAN 我正在使用 Digi
  • IDEA插件'github copilot'无法登录github

    我的IDEA插件 GitHub 副驾驶 无法登录 GitHub 正在等待 GitHub 身份验证 但 我的VSCode可以成功登录 另请确保您已成功注册并提供付款方式 https github com features copilot ht
  • UNet随机断开

    对于基本的网络场景 两个玩家变换和偶尔的 RPC 我经常遇到 UNet 丢失的情况 连接因超时而断开 连接会在 5 分钟内可靠地断开 大多数情况下会在 30 秒内断开 我在网上看到 UNet 经常这样做 我尝试过增加NetworkDropT
  • Java HashMap 在 for 循环中的“put”方法

    我在使用时遇到问题HashMap在 for 循环中 我做错了什么吗 我需要做出什么改变吗 下面是代码及其输出 Code public static void main String args ArrayList
  • 自动 Cookie 处理 C#/.NET HttpWebRequest+HttpWebResponse

    有没有办法使用 HttpWebRequest HttpWebResponse 对象自动处理 NET 中的 cookie 我最好只在 NET 环境中寻找 LWP UserAgent 及其行为 perl 的等效项 有什么建议或建议吗 我想你正在
  • 不兼容的库版本:XXX需要2.0.0或更高版本,但Runes提供1.0.0版本

    我试图在 iPhone 上运行 iOS 应用程序 项目编译得很好 但是当应用程序启动时 XCode 控制台显示 dyld Library not loaded rpath Runes framework Runes Referenced f
  • 使用 Apache POI 根据 csv 工作表更新 Excel 工作表值

    我对java还是个新手 我在 java 语法方面遇到了一些问题 我的程序应该执行以下过程 1 它以csv文件作为输入 2 它以excel文件作为输入 3 它应该迭代写入日期的两个文件的第一列 4 通过添加 csv 工作表中的信息来更新 ex
  • Firebase 托管 Flask 应用程序

    我正在尝试在黑客马拉松项目上托管一个简单的 Flask 应用程序 但遇到了一个无法识别路线的问题 例如 假设我的烧瓶路线是 app route helloWorld methods POST def index inputted name
  • 有没有办法从 Java 中的文件扩展名生成 Content-Type 标头?

    我有一个 Java 应用程序 有时必须仅从文件名生成 Content Type 标头 有没有办法估计常见扩展的内容类型 例如 pdf 映射到 application pdf 等 Yes URLConnection guessContentT
  • iPhone模拟器突然开始运行很慢

    我已经在 iPhone 模拟器中开发一个应用程序几个星期了 到目前为止它一直运行良好 但突然在加载内容和动画时开始运行非常慢 自从上次成功测试以来 我没有对代码进行任何更改 我尝试重新启动模拟器 多次 并删除应用程序并进行完全干净的重建 但
  • Laravel 4 - 将 OnChange 分配给 Form::select

    有没有办法将 OnChange 事件分配给 Form Select 字段 我现在已经设法解决这个问题 但它非常混乱 我想更改它 以便我所有的 ajax 请求都在一个文件中 还有其他人遇到过这个吗 Thanks 设法修复它 Form sele
  • Android XML 布局文件和命名空间

    Android 布局是在 XML 中定义的 并在根元素中声明此命名空间 xmlns android http schemas android com apk res android 元素示例
  • 使用 google-api-python-client 通过 Python 访问 Google Photo API

    根据Google API 客户端库 https developers google com api client library python apis photoslibrary v1页面可以使用 python 客户端库访问 Google
  • python 3.4 中使用正则表达式的语法无效

    我在 python 3 4 中使用以下表达式语法错误但相同的代码可以在 python 2 7 中运行 block re compile ur DATA value S s n DATA value2 re IGNORECASE re DOT