只打印第二列中唯一的行

2024-10-01 09:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件(1.csv),里面有几行文字,看起来像:

"redostoneage",RedoStoneAge,False,7378,I love America. I love our Constitution. I hope we return to our LIBERTARIAN values!
"CelebVolger",redostoneage,False,7378,I love America. I love our Constitution. I hope we return to our LIBERTARIAN values!
"PatsyRoussel",PatsyRoussel,False,1690,Blue Libbie democrat progressive and proud of it !!

我只想打印(或写入一个新的.csv)行,其中第二列(即redostoneage)不在紧跟其后的行上重复。这类似于unix中的不区分大小写的uniq命令。不需要分类。所以对于输出,我希望:

"redostoneage",RedoStoneAge,False,7378,I love America. I love our Constitution. I hope we return to our LIBERTARIAN values!
"PatsyRoussel",PatsyRoussel,False,1690,Blue Libbie democrat progressive and proud of it !!

我见过一些人用电视机做这个。我想我已经接近了,但是我不能让这个装置正常工作:

lines_seen = set() # holds lines already seen
for line in open('1.csv', "r"):
    columns = line.split(',')
    if len(columns) >= 2:
        username = columns[1]
        lowercaseusername = username.lower()
        if lowercaseusername not in lines_seen: # not a duplicate
            print line.strip()

Tags: csvtofalsereturnourwevalueslines
1条回答
网友
1楼 · 发布于 2024-10-01 09:30:14

您唯一缺少的是添加您看到的行:

if lowercaseusername not in lines_seen:
    lines_seen.add(lowercaseusername) # <  facepalm here
    print line.strip()

你忘了那句台词。我相信你已经意识到为什么这是必要的:你只会和一个空集做比较,而不会把你已经印好的加进去。你知道吗

相关问题 更多 >