PY花子 发表于 2022-5-31 11:23:33

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


       各位大神:


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

                        ['建安小区 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 函数删除后没有效果 不知道哪里出错了


请各位大神不吝赐教

hrpzcf 发表于 2022-5-31 11:44:38

本帖最后由 hrpzcf 于 2022-5-31 11:45 编辑

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

傻眼貓咪 发表于 2022-5-31 12:09:10

arr =

傻眼貓咪 发表于 2022-5-31 12:12:55

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元/㎡

PY花子 发表于 2022-5-31 14:59:37

傻眼貓咪 发表于 2022-5-31 12:12


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

还想请问以下大佬,您使用的语法是什么知识?我在那里能学到?{:5_111:}

PY花子 发表于 2022-5-31 15:00:26

hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
    title_list.remove(' ')
print(title_list)

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗?

PY花子 发表于 2022-5-31 15:01:15

hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
    title_list.remove(' ')
print(title_list)

大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗

傻眼貓咪 发表于 2022-5-31 16:07:47

PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效



就是 Python
可能是缩排问题,因为我是用手机写的,你试试一行一行写代码

傻眼貓咪 发表于 2022-5-31 16:11:47

本帖最后由 傻眼貓咪 于 2022-5-31 16:13 编辑

PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效



你是指列表推导式吗?
我用的只是基本语法,见笑了。
很多地方都可以学习到,小甲鱼也有教。

当初约定 发表于 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)

健康的西西弗斯 发表于 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)!='':
                for i1 in range(0,len(list(slist))):
                        ls.append(list(slist))
for i in range(len(ls)-1,-1,-1):
      if ls==' ' or ls=='\n':
                ls.remove(ls)
ls=''.join(ls)
print(ls)
效果:建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫79㎡南高层(共6层)1996年建造建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡

XX牛牛 发表于 2022-5-31 21:39:09

{:10_243:}

健康的西西弗斯 发表于 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)!='':
                for i1 in range(0,len(list(slist))):
                        ls.append(list(slist))
for i in range(len(ls)-1,-1,-1):
      if ls==' ':
                ls.remove(ls)
ls=''.join(ls)
print(ls)
效果:
建安小区5楼80平米三室一厅一卫带下房41.5万广告3室1厅1卫
79㎡

高层(共6层)

1996年建造
建安小区山海关南门老龙头路满五年新上郭桂香4.5分山海美中介41.5万5254元/㎡

Twilight6 发表于 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)))

页: [1]
查看完整版本: 求助 删除列表中空元素 纯小白