鱼C论坛

 找回密码
 立即注册
查看: 1983|回复: 13

求助 删除列表中空元素 纯小白

[复制链接]
发表于 2022-5-31 11:23:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

       各位大神:


                        求助  从本地房源信息网爬取  到信息为遍历出列表格式:  

                        ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']

想删除列表中所有的空字符,保留有效元素请问有什么解决办法?





                        while '' in title_list:
                                        title_list.remove('  ')
                           print(title_list)


用remove 函数删除后没有效果 不知道哪里出错了


请各位大神不吝赐教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-31 11:44:38 | 显示全部楼层
本帖最后由 hrpzcf 于 2022-5-31 11:45 编辑

while ' ' in title_list:
    title_list.remove(' ')
print(title_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 12:09:10 From FishC Mobile | 显示全部楼层
arr = [s for s in arr if s != ' ']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 12:12:55 From FishC Mobile | 显示全部楼层
arr = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']

temp = ""
for each in arr:
        for c in each:
                if c != ' ':
                        temp += c
print(temp)
建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫
79㎡
南
高层(共6层)

1996年建造
建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-31 14:59:37 | 显示全部楼层

大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效

还想请问以下大佬,您使用的语法是什么知识?我在那里能学到?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-31 15:00:26 | 显示全部楼层
hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
    title_list.remove(' ')
print(title_list)

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-31 15:01:15 | 显示全部楼层
hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
    title_list.remove(' ')
print(title_list)

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 16:07:47 From FishC Mobile | 显示全部楼层
PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效


就是 Python
可能是缩排问题,因为我是用手机写的,你试试一行一行写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 16:11:47 From FishC Mobile | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-5-31 16:13 编辑
PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效



你是指列表推导式吗?
我用的只是基本语法,见笑了。
很多地方都可以学习到,小甲鱼也有教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 17:35:24 | 显示全部楼层
arr = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫',
       ' ', '\n                            79㎡\n                        ', ' ', '南', ' ',
       '\n                            高层(共6层)\n                        ', ' ',
       '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ',
       '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ',
       '5254元/㎡']

for i in arr:
    i = i.replace(" ","").replace("\n","")
    if i != "":
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 21:17:06 | 显示全部楼层
slist=['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']
ls=[]
for i in range(0,len(slist)):
        if list(slist[i])!='':
                for i1 in range(0,len(list(slist[i]))):
                        ls.append(list(slist[i])[i1])
for i in range(len(ls)-1,-1,-1):
        if ls[i]==' ' or ls[i]=='\n':
                ls.remove(ls[i])
ls=''.join(ls)
print(ls)
效果:建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫79㎡南高层(共6层)1996年建造建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 21:39:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-31 22:04:09 | 显示全部楼层
slist=['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']
ls=[]
for i in range(0,len(slist)):
        if list(slist[i])!='':
                for i1 in range(0,len(list(slist[i]))):
                        ls.append(list(slist[i])[i1])
for i in range(len(ls)-1,-1,-1):
        if ls[i]==' ':
                ls.remove(ls[i])
ls=''.join(ls)
print(ls)
效果:
建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫
79㎡

高层(共6层)

1996年建造
建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 10:57:50 | 显示全部楼层


因为你列表中的元素,有的是 "  " 两个空格,甚至多个,而你 while 循环判断的是 " " 一个空格

且 remove 移除的也是 一个空格,导致你的列表去除不掉无用的空格,用 for 循环倒置去除即可,参考代码:
title_list = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']
for i in title_list[::-1]:
    if i.strip() == "":
        title_list.remove(i)
print(title_list)

或者用过滤器:
title_list = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']
title_list = list(filter(lambda x : x.strip(), title_list))
print(title_list)

用 map 处理无用数据后效果更好:
title_list = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']

m = map(lambda x:x.replace("\n", "").strip(), title_list)
print(list(filter(lambda x:x, m)))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表