编码错误,Python中的美丽汤

时间:2014-04-16 20:34:19

标签: python unicode encoding beautifulsoup

我有一个由BeautifulSoup读取的HTML,它在那里找到了一个标签。

        availabilityList = []
        for label in soup.find(id=studyroom).select('li.zone label'):
            a = label.get_text()
            b = a.encode('ascii','ignore')
            availabilityList.extend(b)
        #this part below doesn't work
        ','.join(availabilityList)

我使用编码来删除列表开头的u,但是这仍然是一个奇怪的错误。

print availabilityList是

['R', 'o', 'o', 'm', ' ', '2', '2', '5', ' ', '1', '0', ':', '0', '0', ' ', 'A', 'M', 'R', 'o', 'o', 'm', ' ', '2', '2', .....]

我只需要一个包含字符串的列表。 连接功能不起作用

availabilityList = [Room 225 10:00 AM, Room 225 11:00 AM...]

2 个答案:

答案 0 :(得分:0)

availabilityList.extend(b)

b视为列表。在这种情况下是一个字符列表,并用它扩展availabilityList

你需要这样做:

availabilityList.append(b)

这就是我的意思:

>>> a_list = []
>>> a = 'text'
>>> a_list.append(a)
>>> a_list
['text']
>>> b = 'new_text'
>>> a_list.extend(b)
>>> a_list
['text', 'n', 'e', 'w', '_', 't', 'e', 'x', 't']

请注意差异appendextend

答案 1 :(得分:0)

我认为错误不是使用BeautifulSoup,而是使用extend函数而不是append函数。

上述代码的正确第4行是:availabilityList.append(b)

基本上发生的是" b"中的字符串。被视为一个字符列表,每个字符都附加在" availabilityList"的末尾。 看看here,看看延伸和追加之间的区别。