我的问题很简单:如果以上两个命令都不能将字符串拆分成多行,这是否意味着什么都没有划分字符串?
我的例子非常深入,但简而言之:我使用BeautifulSoup解析了HTML表格中的特定数据,但是当我打印数据时,它只是一个混乱的字符串而不是整齐的表格格式。我尝试将其转换为Pandas DataFrame,但仍然没有成功。然后我尝试使用上面的命令来消除输出,但那些也失败了。这一切都让我相信它实际上必须是一个没有分隔符的连续字符串(尽管显然在表中它们是单独的条目)。
我很乐意帮助解决这个问题。我不确定我是否使用了错误的命令,或者我的数据是否真的难以使用。谢谢。
我的数据(以及我希望如何打印):
我的相关代码:
rows = table.findAll("tr")[1:2]
data = {
'ID' : [],
'Available Quota' : [],
'Live Weight Pounds' : [],
'Price' : [],
'Date Posted' : []
}
for row in rows:
cols = row.findAll("td")
data['ID'].append(cols[0].get_text())
data['Available Quota'].append(cols[1].get_text())
data['Live Weight Pounds'].append(cols[2].get_text())
data['Price'].append(cols[3].get_text())
data['Date Posted'].append(cols[4].get_text())
fishData = pd.DataFrame(data)
#print(fishData)
str1 = ''.join(data['Available Quota'])
#print(type(str1))
#str1.split("\n")
str1.splitlines()
print(str1)
打印的内容:
GOM CODGOM HADDDABSGOM YT
答案 0 :(得分:1)
我的猜测是,在您丢弃的表格单元格内发生了一些格式化。假设您的表格单元格中可见的四行由<br>
标记分隔,当您致电get_text
时,BeautifulSoup会丢弃该信息:
>>> s = 'First line <br />Second line <br />Third line'
>>> soup = BeautifulSoup(s)
>>> soup.get_text()
u'First line Second line Third line'
如上所述[{3}},您可以换出<br>
代码换行,这可能会让您的生活更轻松:
>>> for br in soup.find_all("br"):
... br.replace_with("\n")
>>> soup.get_text()
u'First line \nSecond line \nThird line'
over here生成器在这里也可能有用;它们返回最初由标签分隔的文本块:
>>> soup = BeautifulSoup(s)
>>> list(soup.stripped_strings)
[u'First line', u'Second line', u'Third line']
那么,如果你这样做会发生什么:
data['Available Quota'].extend(cols[1].stripped_strings)
希望您应该在data['Available Quota']
中找到您要查找的列表:
>>> data['Available Quota']
['GOM', 'CODGOM', 'HADDDABSGOM', 'YT']
答案 1 :(得分:0)
如果您只是替换:
str1 = ''.join(data['Available Quota'])
与
str1 = '\n'.join(data['Available Quota'])
然后注释掉:
str1.splitlines()
然后您的print语句将打印出以下内容:
GOM
CODGOM
HADDDABSGOM
YT
我看作'\ n'.join()
输出的一个简单例子In [41]: b
Out[41]: ['a', 'b', 'c']
In [42]: print('\n'.join(b))
a
b
c