我有一个包含以下正则表达式的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中有效呢。 有没有一种方法我可以写它来处理这两个版本?你知道吗
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互操作性的最佳方法是使用:
然后只需删除
u
。如果您明确需要字节,那么b"these are byte-strings"
将适用于2/3。你知道吗相关问题 更多 >
编程相关推荐