【问题标题】:how to removing partly duplicates from tweets list in csv file using python如何使用python从csv文件中的推文列表中删除部分重复
【发布时间】:2015-04-23 23:22:51
【问题描述】:

我是 python 新手,我正在执行情绪分析,但不知何故我必须删除重复的推文。问题是我想删除以相同的前 5 个单词开头的每条推文,使用如下功能:

f1 = csv.reader(open(r'C:\pp.csv', 'rb'))
writer = csv.writer(open(r'C:\oo.csv', 'wb'))
tweet = set()
for row in f1:
    if row[1] not in tweet:
        writer.writerow(row)
        tweet.add( row[1] )
        f1.close()
        writer.close()

【问题讨论】:

  • 首先不要在for循环中关闭f1和writer。让它们保持打开状态,直到完成所有迭代。其次,你得到的实际结果是什么,它与你想要的有什么不同?
  • 推文是排序的还是随机的?整个文件可以保存在内存中吗?
  • 最关键的问题是如何使用正则表达式来删除像这两条推文一样开头相同的推文的重复项:@tesco 的 dave lewis 正在打硬仗,正视 ‰ £6.38 的现实10 亿美元的损失:你无法...@tesco 的 dave lewis 中的 URL 营销正在努力应对 63.8 亿英镑损失的现实:你无法将... URL 数字化

标签: python csv twitter


【解决方案1】:

这就是我要做的设置:

f1 = csv.reader(open(r'C:\pp.csv', 'rb'))
writer = csv.writer(open(r'C:\oo.csv', 'wb'))
tweet = set()
index = 5
for row in f1:
    if row[1][:index] not in tweet:
        writer.writerow(row)
        tweet.add( row[1][:index] )
f1.close()
writer.close()

基本上,索引告诉您的代码只将 5 个字符读入字符串的开头,然后它只存储那么多字符以供以后检查。您可以将其设置为您想要的任何数字,因此如果您希望它检查 40 个字符,只需调整索引即可。

不会出现索引错误,因为太短的字符串只会读取整个字符串。

【讨论】:

    【解决方案2】:

    这是一种可能性:

    f1 = csv.reader(open(r'C:\pp.csv', 'rb'))
    writer = csv.writer(open(r'C:\oo.csv', 'wb'))
    
    tweet = set()
    tweet_start = set()
    for row in f1:
        the_tweet = row[1]
        start = ' '.join(the_tweet.split(' ')[:5])
        if start not in tweet_start:
            writer.writerow(row)
            tweet.add(the_tweet)
            tweet_start.add(start)
    f1.close()
    writer.close()
    

    【讨论】:

    • 乐购宣布创纪录的亏损 å£64 亿所以 yueki89wks,s;乐购宣布创纪录的亏损 64 亿英镑所以 jjjuuopytttt
    • 这些是重复的例子
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多