【问题】
在Python中,试图用:
1 | foundMainUrlOrPermalink = re.search( "(?P<blogIdMainUrl>http://blog\.tianya\.cn/blogger/blog_main\.asp\?BlogID=(?P<blogId>\d+))(&PostID=(?<postId>\d+))?/?" , inputUrl); |
去匹配:
1 2 3 4 5 | # type2, main url with blogId, perma link: |
结果出错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Traceback (most recent call last): File "D:\tmp\tmp_dev_root\wordpress\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py" , line 1816, in <module> main(); File "D:\tmp\tmp_dev_root\wordpress\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py" , line 1573, in main initialization(srcUrl); File "D:\tmp\tmp_dev_root\wordpress\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py" , line 1408, in initialization (extractOK, extractedBlogUser, generatedBlogEntryUrl) = extractBlogUser(inputUrl); File "D:\tmp\tmp_dev_root\wordpress\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py" , line 1772, in extractBlogUser return callBlogFunc(extractBlogUser, inputUrl); File "D:\tmp\tmp_dev_root\wordpress\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py" , line 1681, in callBlogFunc return trueFunc(paraList[0]); File "libs/crifan/blogModules\BlogTianya.py" , line 155, in extractBlogUser foundMainUrlOrPermalink = re.search( "(?P<blogIdMainUrl>http://blog\.tianya\.cn/blogger/blog_main\.asp\?BlogID=(?P<blogId>\d+))(&PostID=(?<postId>\d+))?/?" , inputUrl); File "D:\tmp\WordPress\DevRoot\Python27\lib\re.py" , line 142, in search return _compile(pattern, flags).search(string) File "D:\tmp\WordPress\DevRoot\Python27\lib\re.py" , line 244, in _compile raise error, v # invalid expression sre_constants.error: syntax error |
【解决过程】
1.调试了半天,最后竟然发现,原来是自己不小心,对于正则表达式中,少了个P,应该是:
foundMainUrlOrPermalink = re.search("(?P<blogIdMainUrl>http://blog\.tianya\.cn/blogger/blog_main\.asp\?BlogID=(?P<blogId>\d+))(&PostID=(?P<postId>\d+))?/?", inputUrl); |
【总结】
看来写代码时,还是要慢点写,注意不要犯语法错误了。。。。
转载请注明:在路上 » 【已解决】Python中使用re.search出错:sre_constants.error: syntax error