python

时间:2015-11-26 11:24:00

标签: python unicode

我是这个论坛的新手(这是我的第一个问题),所以请耐心等待。我正在用瑞典语抓取一个网站。它使用的是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))

这样可行......

我很困惑。

2 个答案:

答案 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','')
)

您将获得预期的结果。