我是这个论坛的新手(这是我的第一个问题),所以请耐心等待。我正在用瑞典语抓取一个网站。它使用的是ISO-8859-1字符集。
在源代码中,它可能看起来像这样:
<div class="fl icon-post-old"></div>
2015-11-13, 15:09
<a href="
让我们说我想抓住日期和时间(这不是一个真实的例子)。
threadcode=opener.open(threadurl).read()
threadcode2=threadcode.decode("ISO-8859-1")
post=re.findall(r'<div class="fl icon-post-old"></div>(.*?)<a',str(threadcode2))
post2=re.findall(r'<div class="fl icon-post-old"></div>(.*?)<a',str(threadcode))
print (post) #this is blank
print (post2) #this works fine
所以,如果我在&#34;可读的瑞典变量帖子&#34;中搜索某些东西,它似乎不起作用。但是,如果我使用Unicode表示进行相同的搜索(这不是很有用),那么相同的搜索工作。
那些了解那些在这里发生了什么的优秀程序员?
我还可以补充一点,如果它有助于在某些情况下搜索确实有效... 例如:
post=re.findall(r'Jag vill(.*?)bil',str(threadcode2))
这样可行......
我很困惑。
答案 0 :(得分:1)
将unicode字符串传递给re.UNICODE
时,您应该传递re.findall
标志:
post=re.findall(r'<div class="fl icon-post-old"></div>(.*?)<a',threadcode2, flags=re.UNICODE)
答案 1 :(得分:1)
与瑞典人没什么关系。我认为re
是多线的。如果您执行以下操作:
post=re.findall(
r'<div class="fl icon-post-old"></div>(.*?)<a',
threadcode2.replace('\n','')
)
您将获得预期的结果。