【问题标题】:How to compare two strings which contain backslashes in Python如何在Python中比较两个包含反斜杠的字符串
【发布时间】:2016-05-06 20:05:16
【问题描述】:

我正在使用 Python 中的 ocr 模块,一些图像返回此字符串 '921,\u201d'。 (图片是一个日期,看起来像 2015 年 9 月 21 日)

现在,如果我尝试执行此操作

a == '921,\u201d'

Python 自动转义硬编码字符串中的反斜杠(\),比较不相等。

如何在 Python 不将某些子字符串解释为 unicode 字符的情况下比较两个 ascii 字符串?

长度为6 错误是 self.assertIn(res0, [r'921,\u201d', "2015 年 2 月 21 日"]) AssertionError: u'(921,\u201d' not found in ['921,\u201d', 'Feb 21, 2015']

谢谢。 \u201 是唯一的一个字符。

【问题讨论】:

  • 我们需要对所涉及的字符串以及您使用的 Python 版本进行更精确的描述。 OCR 工具提供给您的字符串的len 是什么?它是否包含文字反斜杠,还是只是 repr 那样?它是否在每一端都包含文字单引号?
  • 这是 Python 2 还是 3?

标签: python string ocr


【解决方案1】:

最简单的方法是使用原始字符串文字。

a == r'921,\u201d'

这允许您使用文字反斜杠而不必对其进行转义(唯一的限制是字符串仍然不能以未转义的反斜杠结尾)。

您还可以通过在反斜杠前面添加反斜杠来转义它:

a == '921,\\u201d'

【讨论】:

    【解决方案2】:

    尝试使用 'utf-8' 进行解码:

    >>> '921,\u201d'.decode('utf-8')
    u'921,\\u201d'
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 2018-09-25
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多