我有很多正则表达式,有许多或|或|或:
re.findall(u'\W\s[A-Z]$|(com.|d\.)|\(?adj.\)?|(all\.$)|^(Pays|région|lieu-dit|chef-
lieu|canal|collégiale|ruisseau|bâtiment|hôpital|roi de|(bailliage|canton)(s?))|site|afflu(a|e)nt|forêt|village|église|état(s?)',
su)
我试图用\:
分开re.findall(u'\W\s[A-Z]$\
|(com.|d\.) \
|\(?adj.\)? \
|(all\.$) \
|^(Pays|région|lieu-dit \
|chef-lieu
etc
当我像这样拆分时 - 它会停止工作,但是Spyder没有发现任何错误 - 它只是停止输出。
答案 0 :(得分:2)
您在行的开头以及某些行的末尾引入了空格:
>>> u'\W\s[A-Z]$\
... |(com.|d\.) \
... |\(?adj.\)? \
... |(all\.$) \
... |^(Pays|région|lieu-dit \
... |chef-lieu '
u'\\W\\s[A-Z]$ |(com.|d\\.) |\\(?adj.\\)? |(all\\.$) |^(Pays|r\xe9gion|lieu-dit |chef-lieu '
如果要将字符串拆分为多个源行,请使用连续的字符串:
re.findall(u'\W\s[A-Z]$'
u'|(com.|d\.)'
u'|\(?adj.\)?'
u'|(all\.$)'
u'|^(Pays|région|lieu-dit'
u'|chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital'
u'|roi de|(bailliage|canton)(s?))'
u'|site|afflu(a|e)nt'
u'|forêt|village|église|état(s?)',
sn
)
Python将在编译时自动为您加入:
>>> (u'\W\s[A-Z]$'
... u'|(com.|d\.)'
... u'|\(?adj.\)?'
... u'|(all\.$)'
... u'|^(Pays|région|lieu-dit'
... u'|chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital'
... u'|roi de|(bailliage|canton)(s?))'
... u'|site|afflu(a|e)nt'
... u'|forêt|village|église|état(s?)')
u'\\W\\s[A-Z]$|(com.|d\\.)|\\(?adj.\\)?|(all\\.$)|^(Pays|r\xe9gion|lieu-dit|chef-lieu|canal|coll\xe9giale|ruisseau|b\xe2timent|h\xf4pital|roi de|(bailliage|canton)(s?))|site|afflu(a|e)nt|for\xeat|village|\xe9glise|\xe9tat(s?)'
或者使用详细的正则表达式语法:
re.findall(u'''
\W\s[A-Z]$
|(com.|d\.)
|\(?adj.\)?
|(all\.$)
|^(Pays|région|lieu-dit
|chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital
|roi de|(bailliage|canton)(s?))
|site|afflu(a|e)nt
|forêt|village|église|état(s?)''', su, flags=re.VERBOSE)
re.VERBOSE
标志会将解析器更改为忽略所有文字空格;解析上面的表达式,就好像所有空格,制表符和换行符都不存在一样。对于某一行的任何#
条评论也会从#
转换为换行符。