使用Python 3无法识别Python 2字符串表达式

2024-05-19 02:54:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下正则表达式的python脚本:

expression1 = ur'(.*?),\s(.*)\s(sold(?: post-exercise)?|bought|purchased|awarded|exercised|transferred in|transferred out|re-invested)\s*([\d,]*).*price of\s*(\d*.\d+?p)'

Python解析器会呕吐并抱怨其无效语法。你知道吗

为什么这个语法在python3中无效,而在python2中有效呢。 有没有一种方法我可以写它来处理这两个版本?你知道吗


Tags: inre脚本语法outpostexerciseur
3条回答

python3中的所有字符串都是unicode,因此不需要前导的u。只需删除u即可使其与python3一起工作。你知道吗

python2 ur字符串与python3有一个奇怪的不兼容,其中\u\U转义仍将被处理,而不是保留为“原始”。在3.3版本中将u前缀重新引入python3时,会使用explicit decision来排除ur组合,而不是具有不一致的行为。你知道吗

如果您想要一个既适用于python2又适用于python3的原始Unicode字符串,则需要一个变通方法。可能包括使用br原始bytestring并使用适当的编解码器将其转换为Unicode,或者使用from __future__ import unicode_literals并使用普通的r前缀。小心\u\U逃逸。你知道吗

我想说,实现Python 2/3互操作性的最佳方法是使用:

from __future__ import unicode_literals

然后只需删除u。如果您明确需要字节,那么b"these are byte-strings"将适用于2/3。你知道吗

相关问题 更多 >

    热门问题