使用正则表达式分割列表

问题描述 投票:0回答:1

我在尝试拆分嵌套列表中的每个元素时遇到了一些麻烦。我第一次使用此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文件中的新行中。因此,当我创建带有标题“ Phone”的csv文件时,上面的每个数字都将位于单独的行中,而不是聚集在一起。我在想可能需要将代码更改为for循环???

我在尝试拆分嵌套列表中的每个元素时遇到了一些麻烦。我第一次分裂时就使用了这种方法。我想对现在的嵌套列表进行另一个拆分。我以为我可以简单地使用...

python regex web-scraping pycharm
1个回答
0
投票

这里更干净的方法是只对info进行另一个正则表达式搜索,例如:

© www.soinside.com 2019 - 2024. All rights reserved.