我一直在尝试清理一些文字。但是坚持使用正则表达式,终于找到了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
它给出了同样的错误。什么可能是问题的根源?
答案 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'
表示“原始”字符串。