请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 18473|回复: 14

怎么从一些数据里去重呢

[复制链接]

22

主题

6

好友

242

积分

中级会员

Rank: 3Rank: 3

发表于 2018-4-8 21:07:32 |显示全部楼层
quchong.png

我想爬取这个列表里的歌但是这个列表里有重复的歌,我该如何把再次出现的歌名去重去掉呢
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-8 23:01:45 |显示全部楼层
不是完全相同的不太方便,除非你每个歌名都去匹配一下后面所有的歌,做个对比
如果完全相同的去重,直接用 set 就可以实现
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

22

主题

6

好友

242

积分

中级会员

Rank: 3Rank: 3

发表于 2018-4-9 10:35:43 |显示全部楼层
crossin先生 发表于 2018-4-8 23:01
不是完全相同的不太方便,除非你每个歌名都去匹配一下后面所有的歌,做个对比
如果完全相同的去重,直接用  ...

我需要的是不完全相同的匹配,程序是这个样子  这些歌名是我爬下来的列表 然后我想每往txt存入一个歌名都要和txt之前存入的歌名做判断看看如果存在这个歌就不存,如果没有就把歌名存进去,而且现在的问题是
拿 ‘’告白气球‘’  举例    我先存入了歌名 ‘’告白气球‘’  然后下次一列表获取的值是 ‘’告白气球(魔术与歌曲)‘’
这个我和之前的匹配的话 我怎么能匹配到 ‘’告白气球‘’ 这个字符串呢,  用in没法实现  因为 in 匹配的 后面匹配的字符串 肯定比之前的字符串短或者相等  才能匹配到。
有没有什么办法呢
回复

使用道具 举报

0

主题

0

好友

137

积分

注册会员

Rank: 2

发表于 2018-4-9 13:48:04 |显示全部楼层
人工智能 发表于 2018-4-9 10:35
我需要的是不完全相同的匹配,程序是这个样子  这些歌名是我爬下来的列表 然后我想每往txt存入一个歌名都 ...

有一个方法就是在存入文件后去重,用正则表达式作为去重条件,满足条件删除重复中的一个。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-9 14:50:22 |显示全部楼层
人工智能 发表于 2018-4-9 10:35
我需要的是不完全相同的匹配,程序是这个样子  这些歌名是我爬下来的列表 然后我想每往txt存入一个歌名都 ...

你可正反两个方向都用 in 判断一下啊
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

22

主题

6

好友

242

积分

中级会员

Rank: 3Rank: 3

发表于 2018-4-9 19:00:59 |显示全部楼层
zhaolehua 发表于 2018-4-9 13:48
有一个方法就是在存入文件后去重,用正则表达式作为去重条件,满足条件删除重复中的一个。 ...

这些歌名。。我想不出正则怎么写啊
回复

使用道具 举报

22

主题

6

好友

242

积分

中级会员

Rank: 3Rank: 3

发表于 2018-4-9 19:02:05 |显示全部楼层
crossin先生 发表于 2018-4-9 14:50
你可正反两个方向都用 in 判断一下啊

什么意思啊 没明白
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-9 23:19:54 |显示全部楼层
人工智能 发表于 2018-4-9 19:02
什么意思啊 没明白

前面的 in 后面的 and 后面的 in 前面的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

22

主题

6

好友

242

积分

中级会员

Rank: 3Rank: 3

发表于 2018-4-10 17:31:38 |显示全部楼层
crossin先生 发表于 2018-4-9 23:19
前面的 in 后面的 and 后面的 in 前面的

好像我的数据没法用这种办法去重
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-11 12:02:41 |显示全部楼层
把已有数据放in前面判断一次,再把已有数据放in后面判断一次

a = "告白气球"
b = "告白气球(魔术与歌曲)"
if (a in b) or (b in a):
    略过

不符合你的要求?

首先你规则想清楚了没有。不然我们讨论了半天,你说这不是你要的效果

再复杂的情况你也没法用简单的字符串方法。去搜索下“文本相似度匹配”来实现吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-17 00:49 , Processed in 0.028478 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部