【问题标题】:re.error with Python 3.9.6 / Mac OS Big Sur [closed]Python 3.9.6 / Mac OS Big Sur 出现 re.error [关闭]
【发布时间】:2021-08-27 15:48:07
【问题描述】:

我正在尝试使用以下方法从文本 (Commission.txt) 中删除不需要的字符:

File = open("/Applications/Python 3.9/Comission.txt",encoding="Latin-1")
Commission=File.read()
CommissionClean = re.sub(r'(Ñ)(Ó)(Ò)(xCA)(xca)([*\])','',Commission)

但是收到以下错误信息:

 raise source.error("unterminated character set",
re.error: unterminated character set at position 20

【问题讨论】:

  • 欢迎来到 SO!您能否展示一个具有代表性的 Commission.txt 示例和您想要的输出?错误是不言自明的:\] 转义了],所以你有一个未终止的字符集。删除 `\` 或将其转义。
  • 反斜杠对后面的字符进行转义,以便将其解释为字面上的该字符,而在正则表达式中没有特殊含义。改为写两个反斜杠。

标签: python parsing python-re


【解决方案1】:

\ 使以下] 成为字符集的一部分,而不是字符集的成员。因此,解析器还在集合中包含),它仍在等待字符串结束时看到关闭的]

您需要对反斜杠本身进行转义以使其成为字符集的一部分。

CommissionClean = re.sub(r'(Ñ)(Ó)(Ò)(xCA)(xca)([*\\])','',Commission)

这超出了使用原始字符串文字的范围,它可以防止使用反斜杠来定义正则表达式解析器看到的字符串文字。

【讨论】:

    【解决方案2】:

    [*\] 应该是 [\*\\]\[*\]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2021-06-19
      • 1970-01-01
      • 2021-03-19
      • 2021-02-26
      • 2020-12-22
      • 2021-08-12
      相关资源
      最近更新 更多