Python Regex UTF-8语法错误

时间:2017-05-16 14:15:40

标签: python regex utf-8

我一直在尝试清理一些文字。但是坚持使用正则表达式,终于找到了re.sub。但最终会出现语法错误。 原始代码:

测试名称清理

import re

input = u'CHEZ MADU 東久留米店(シェマディ)【東京都東久留米市】'

pattern = re.compile(ur'(【(.*?)\】)', re.UNICODE)\

print(re.sub(input, pattern, ''))

给我这个错误:

  File "retest01.py", line 6
    pattern = re.compile(ur'(【(.*?)\】)', re.UNICODE)\
                                      ^
SyntaxError: invalid syntax

我一直在测试来自另一个正则表达式线程的代码:python regular expression with utf8 issue

它给出了同样的错误。什么可能是问题的根源?

2 个答案:

答案 0 :(得分:1)

如果你不使用原始字符串表示法,那对我来说效果很好。此外,我不认为您正确使用re.sub

re.sub(pattern, repl, string, count=0, flags=0)

这对我来说没有错误:

import re
input = u'CHEZ MADU 東久留米店(シェマディ)【東京都東久留米市】'
pattern = re.compile(u'(【(.*?)\】)', re.UNICODE)
print(re.sub(pattern, '', input))

这适用于python 2和3,但你不需要3上的unicode说明符。

答案 1 :(得分:0)

自Python 3.3以来ur'....'语法无效(请参阅http://bugs.python.org/issue15096

语法错误有点出人意料地表示在字符串的末尾......

>>> ru'my string'
  File "<stdin>", line 1
    ru'my string'
                ^
SyntaxError: invalid syntax

因此,在Python 3中,您可以使用:

  • 'my string'u'mystring',意思相同(后者在Python 3.3中重新引入,以便与Python 2代码兼容,请参阅PEP 414
  • r'my string with \backslashes'表示“原始”字符串。