【发布时间】:2020-08-07 05:57:36
【问题描述】:
我在尝试拆分嵌套列表中的每个元素时遇到了一些麻烦。我第一次使用这个method。我想对现在嵌套的列表进行另一个拆分。我以为我可以简单地使用同一行代码并进行一些修改goal2 = [[j.split("") for j in goal]],但我仍然遇到一个常见错误:'list' object has no attribute 'split'。我知道您不能拆分列表,但我不明白为什么我的修改与链接方法有任何不同。这是我的第一个网络抓取项目,我正在寻找网站的电话号码。我需要一些帮助来解决我的问题,而不是新代码,以便我可以继续学习和改进自己的方法。
import requests
import re
from bs4 import BeautifulSoup
source = requests.get('https://www.pickyourownchristmastree.org/ORxmasnw.php').text
soup = BeautifulSoup(source, 'lxml')
info = soup.findAll(text=re.compile("((?:\d{3}|\(\d{3}\))?(?:\s|-|\.)?\d{3}(?:\s|-|\.)\d{4})"))[:1]
goal = [i.split(".") for i in info]
goal2 = [[j.split("") for j in goal]]
for x in goal:
del x[2:]
for y in goal:
del y[:1]
print('info:', info)
print('goal:', goal)
没有goal2变量的输出:
info: ['89426 Green Mountain Road, Astoria, OR 97103. Phone: 503-325-9720. Open: ']
goal: [[' Phone: 503-325-9720']]
带有“goal2”变量的期望输出:
info: [info: ['89426 Green Mountain Road, Astoria, OR 97103. Phone: 503-325-9720. Open: ']
goal: [[' Phone: 503-325-9720']]
goal2: ['503-325-9720']
我显然会有更多的数字,但我不想堵塞空间。所以它看起来更像这样:
goal2: ['503-325-9720', '###-###-####', '###-###-####', '###-###-####']
但我想确保每个数字都可以导出到 csv 文件中的新行中。因此,当我创建一个带有标题“电话”的 csv 文件时,上面的每个数字都将位于单独的行中,而不是聚集在一起。我在想我可能需要将代码更改为 for 循环???
【问题讨论】:
-
我运行了你的代码,没有任何问题...
-
请查看编辑。
标签: python regex web-scraping pycharm