鱼C论坛

 找回密码
 立即注册
查看: 2602|回复: 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 函数删除后没有效果 不知道哪里出错了


请各位大神不吝赐教
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

while ' ' in title_list:
    title_list.remove(' ')
print(title_list)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 12:09:10 From FishC Mobile | 显示全部楼层
arr = [s for s in arr if s != ' ']
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2. temp = ""
  3. for each in arr:
  4.         for c in each:
  5.                 if c != ' ':
  6.                         temp += c
  7. print(temp)
复制代码
  1. 建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫
  2. 79㎡

  3. 高层(共6层)

  4. 1996年建造
  5. 建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

还想请问以下大佬,您使用的语法是什么知识?我在那里能学到?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


就是 Python
可能是缩排问题,因为我是用手机写的,你试试一行一行写代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



你是指列表推导式吗?
我用的只是基本语法,见笑了。
很多地方都可以学习到,小甲鱼也有教。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  7. for i in arr:
  8.     i = i.replace(" ","").replace("\n","")
  9.     if i != "":
  10.         print(i)
复制代码
小甲鱼最新课程 -> https://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元/㎡
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-31 21:39:09 | 显示全部楼层
小甲鱼最新课程 -> https://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元/㎡
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

且 remove 移除的也是 一个空格,导致你的列表去除不掉无用的空格,用 for 循环倒置去除即可,参考代码:

  1. title_list = ['建安小区 5楼 80平米 三室一厅一卫 带下房 41.5万', ' ', '  ', '广告', ' ', '3', ' ', '室', ' ', '1', ' ', '厅', ' ', '1', ' ', '卫', ' ', '\n                            79㎡\n                        ', ' ', '南', ' ', '\n                            高层(共6层)\n                        ', ' ', '\n                            1996年建造\n                        ', ' ', '建安小区', ' ', '山海关', '南门', '老龙头路', ' ', '满五年', '新上', ' ', ' ', '郭桂香', ' ', ' ', '4.5分', ' ', '山海美中介', ' ', ' ', ' ', ' ', '41.5', ' ', '万', ' ', '5254元/㎡']
  2. for i in title_list[::-1]:
  3.     if i.strip() == "":
  4.         title_list.remove(i)
  5. print(title_list)
复制代码


或者用过滤器:

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


用 map 处理无用数据后效果更好:

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

  2. m = map(lambda x:x.replace("\n", "").strip(), title_list)
  3. print(list(filter(lambda x:x, m)))
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 20:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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