gpt4 book ai didi

python - 使用正则表达式分割beautifulsoup对象

转载 作者:行者123 更新时间:2023-12-01 09:22:49 32 4
gpt4 key购买 nike

我无法找到解决方案来分割我使用 beautifulsoup 抓取的“div”中包含的时间段和路​​线。下面是我从交互式 shell 中获得的文本。我需要将“通过 I-405/I-65/I-525”和“8 分钟”分开。 46 秒。然后我需要去掉“分钟”和“秒”,这样我就可以组合得到“8.46”。我猜我需要将 split 与正则表达式一起使用?有人可以给我一个这样的例子吗?谢谢。

这是我从网页上抓取的内容:

<div class="coloredodd" id="odContent">
<b>via I-405/I-65/I-525</b>
<br></br>
58 min. 8 sec.
<br></br>
</div>

这是我从 shell 运行的内容:

>>> soup.find_all('div')[16].get_text()

'via I-405/I-65/I-5258 min. 46 sec.'

这是我试图用字典做的事情:

LinkNames[1] = TempLinkNames[7]
LinkNames[2] = TempLinkNames[8]
LinkNames[3] = TempLinkNames[9]
LinkNames[4] = TempLinkNames[4]
LinkNames[5] = TempLinkNames[2]
LinkNames[6] = TempLinkNames[5]
LinkNames[7] = TempLinkNames[3]
LinkNames[8] = TempLinkNames[0]
LinkNames[9] = TempLinkNames[1]
print(LinkNames)

这是字典的第一项:

{'At BTI Road via Ocean Expy (I-525)': '32.48',

以下是我如何解决这个问题,首先将键和值放入列表中,然后手动将其分配给字典。

BWPLinkNames = {BWPCombineNames[6]: BWPSingLinkTime[6],
BWPCombineNames[7]: BWPSingLinkTime[7],
BWPCombineNames[8]: BWPSingLinkTime[8],
BWPCombineNames[9]: BWPSingLinkTime[9],
BWPCombineNames[4]: BWPSingLinkTime[4],
BWPCombineNames[2]: BWPSingLinkTime[2],
BWPCombineNames[5]: BWPSingLinkTime[5],
BWPCombineNames[3]: BWPSingLinkTime[3],
BWPCombineNames[0]: BWPSingLinkTime[0],
BWPCombineNames[1]: BWPSingLinkTime[1]}

将字典项目输出到电子表格时遇到问题。该值为浮点字符串“23.25”。但在电子表格上,它显示不正确并出现错误。它只显示为一位数字,并且该数字与实际的浮点字符串无关。使用 Excel 的 xlsxwriter,这是我输出它们的方式。

for key in BWLinkNames.keys():

worksheet.write(row, col, key)
for value in BWLinkNames[key]:
worksheet.write(row, col + 1, value)
row+= 1
workbook.close()

最佳答案

您可以使用re.findall:

import re
s = 'via I-405/I-65/I-5258 min. 46 sec.'
[timestamp] = re.findall('\d{1}\smin\.\s\d+\ssec', s)
final_result = '.'.join(re.findall('\d+', timestamp))

输出:

'8.46'

编辑:您可以使用BeautifulSoup找到目的地,然后使用str.replace:

from bs4 import BeautifulSoup as soup
import re
s = """
<div class="coloredodd" id="odContent">
<b>via I-405/I-65/I-525</b>
<br></br>
58 min. 8 sec.
<br></br>
</div>
"""
destination = soup(s, 'html.parser').find('b').text
timestamp = '.'.join(re.findall('\d+', soup(s, 'html.parser').find('div').text.replace(destination, '')))

输出:

'via I-405/I-65/I-525'
'58.8'

编辑:不要迭代 BWLinkNames[key],而是简单地利用 BWLinkNames[key]:

for i, key in enumerate(BWLinkNames):
worksheet.write(i, col, key)
worksheet.write(i, col + 1, BWLinkNames[key])

workbook.close()

关于python - 使用正则表达式分割beautifulsoup对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684882/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com