我是python的新手,我有一个包含以下内容的文本文件


  ss ss1,ss ss2,ss ss3,ss ss2,ss ss2,ss ss3


我想删除重复的单词。我的预期输出如下


  ss ss1,ss ss2,ss ss3


我正在使用以下代码

f = open('a.txt', 'r')
file_contents = f.read()
words = file_contents.split()
SS=",".join(sorted(set(words), key=words.index))
print SS


我当前的输出是


  ss,ss1,,ss2,,ss3,,ss2

最佳答案

如果不需要列表的顺序,可以尝试以下操作:

>>> f="ss ss1, ss ss2, ss ss3, ss ss2, ss ss2, ss ss3"
>>> list(set( f.split(', ')))
['ss ss2', 'ss ss3', 'ss ss1']


set构造list可能会花费很多时间,这是保持顺序的另一种方法:

>>> f="ss ss1, ss ss2, ss ss3, ss ss2, ss ss2, ss ss3"
>>> result=[]
>>> for i in f.split(', '):
...     if i not in result:
...         result.append(i)
...
>>> result
['ss ss1', 'ss ss2', 'ss ss3']




顺便说一句,如果列表很大,并且使用set检查新项目是否已经存在是一种更有效的方法。

>>> result=[]
>>> s=set()
>>> for i in f.split(', '):
...     if i not in s:
...         result.append(i)
...         s.add(i)
...
>>> result
['ss ss1', 'ss ss2', 'ss ss3']

关于python - 删除以逗号分隔的重复单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43908180/

10-12 22:57