【问题标题】:Search using dictionary with re.compile()使用带有 re.compile() 的字典进行搜索
【发布时间】:2023-03-19 22:49:02
【问题描述】:

我在创建解析器时遇到了问题。我要在 txt 文件中解析的行如下所示:

'>NAME= (various_names_here)'

每次看到">Name=",我都想在行中阅读。

我的字典有一个项目:

my_dict = {
    'name': re.compile(r'>NAME=  (?P<name>.*)\n'),
}

使用if 命令逐行读取我的txt 文件以查找"name",但我从未找到这些行。

当我快要接近时,我找不到正确的语法来读取这一行。似乎我无法完全弄清楚如何处理&gt;NAME=(***) 之间缺少空格的问题。

【问题讨论】:

  • 您的if 声明在哪里?还请将文件的示例内容放在文本块中,以便我们查看它的外观。我不知道' 是否是您文件的一部分。
  • 字典的用途是什么?
  • 字符串之前的r 不会导致您在匹配结束时搜索文字"\n",而不是我认为您正在寻找的新行吗?
  • @SyntaxVoid 实际上那部分是正确的。 r 是为了防止反斜杠瘟疫。
  • edit您的问题并添加代码显示您如何在字典中使用已编译的正则表达式。

标签: python regex python-3.x parsing


【解决方案1】:

如果你需要这样匹配:

&gt;NAME= (Bob)

您的正则表达式模式必须像这样修改:

&gt;NAME= \((?P&lt;name&gt;.*)\)\n

否则圆括号将不匹配。

上面的模式将匹配:

name = Bob

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多