【问题标题】:Selecting a specific line in a list of strings in python在python中的字符串列表中选择特定行
【发布时间】:2020-03-03 00:47:06
【问题描述】:

我有一个字符串,可以打印以下保存为列表的内容。这就是我以当前格式创建列表的方式

for ticker_list in ticker_list_items:
    ticker = ticker_list.contents[0]
<div id="T-THO">
<div class="confirm icon-check" title="Last confirmed on 2/18/2020"></div>
<div class="company" onclick="javascript:location.href='stocks/tho'">Thor Industries, Inc.</div>
<div class="ticker" onclick="javascript:location.href='stocks/tho'">THO</div>
<div class="time" onclick="javascript:location.href='stocks/tho'">6:45 AM ET</div>
<div class="epstitle" onclick="javascript:location.href='stocks/tho'">EPS:</div>
<div class="revtitle" onclick="javascript:location.href='stocks/tho'">Rev:</div>
<div class="estimate" onclick="javascript:location.href='stocks/tho'">$0.76</div>
<div class="revest" onclick="javascript:location.href='stocks/tho'">$1.79 B</div>
<div class="revgrowthprint">38.7%</div>

这被保存为一个包含 6 个其他字符串的列表,格式非常相似。我的目标是从包含“div id...”的第一行中提取数据并将其保存为新列表。

此列表中的某些字符串有多个 'div id...' 的实例

我试图在 for 循环中执行此操作,但我真的迷失了根据第一个“x”个字符来保存一行的方法。

【问题讨论】:

标签: python html string list web-scraping


【解决方案1】:

我想这些数据来自一个网站,在这种情况下,最简单的方法是使用一些为此设计的解析器(即 BeautifulSoup)。或者,您可以定义一些您正在寻找的模式,并使用像 re 这样的模块自己解析数据,该模块是 python 的标准配置。

import re

ticker_list = ["""<div id="T-THO">
<div class="confirm icon-check" title="Last confirmed on 2/18/2020"></div>
<div class="company" onclick="javascript:location.href='stocks/tho'">Thor Industries, Inc.</div>
<div class="ticker" onclick="javascript:location.href='stocks/tho'">THO</div>
<div class="time" onclick="javascript:location.href='stocks/tho'">6:45 AM ET</div>
<div class="epstitle" onclick="javascript:location.href='stocks/tho'">EPS:</div>
<div class="revtitle" onclick="javascript:location.href='stocks/tho'">Rev:</div>
<div class="estimate" onclick="javascript:location.href='stocks/tho'">$0.76</div>
<div class="revest" onclick="javascript:location.href='stocks/tho'">$1.79 B</div>
<div class="revgrowthprint">38.7%</div>""", """<div id="Section 2">"""]

title_list = []
for ticker in ticker_list:
    name_div = re.search('<div id=".+?">', ticker).group() # matches <div id="T-THO">
    title = re.search('".+?"', name_div).group()[1:-1] # matches "T-THO" and gets all but " chars
    title_list.append(title)

print(title_list)

结果:

['T-THO', '第 2 节']

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2017-06-06
    • 2015-10-17
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    相关资源
    最近更新 更多