求助 删除列表中空元素 纯小白
各位大神:
求助从本地房源信息网爬取到信息为遍历出列表格式:
['建安小区 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:45 编辑
while ' ' in title_list:
title_list.remove(' ')
print(title_list) arr = 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元/㎡ 傻眼貓咪 发表于 2022-5-31 12:12
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效{:5_99:}
还想请问以下大佬,您使用的语法是什么知识?我在那里能学到?{:5_111:} hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
title_list.remove(' ')
print(title_list)
大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗? hrpzcf 发表于 2022-5-31 11:44
while ' ' in title_list:
title_list.remove(' ')
print(title_list)
大佬:
缩进也是按照您的格式,只不过复制到网页没仔细缩进, 还有别的办法吗 PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效
就是 Python
可能是缩排问题,因为我是用手机写的,你试试一行一行写代码 本帖最后由 傻眼貓咪 于 2022-5-31 16:13 编辑
PY花子 发表于 2022-5-31 14:59
大佬
我复制代码再我电脑的python ide里面 运行了一下会报错,显示语法无效
你是指列表推导式吗?
我用的只是基本语法,见笑了。
很多地方都可以学习到,小甲鱼也有教。 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)
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元/㎡ {:10_243:} 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元/㎡
因为你列表中的元素,有的是 "" 两个空格,甚至多个,而你 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]