从标准输入读取的文本行中的唯一单词

时间:2016-02-14 14:07:14

标签: python python-3.x

我试图看看标准输入中有多少独特的单词。

import sys
s = sys.stdin.readlines()
seen = []
for lines in s:
   if lines not in seen:
       seen = seen + (lines.split())
       seen.append(lines)
       print (len(seen))

我知道我在正确的轨道上,但如果树和树不应该算作单独的独特单词。

周一和1是单词,但是 - 不是。

2 个答案:

答案 0 :(得分:0)

seen = []
for line in s:
    for word in line.strip().split():
        if word.isalnum() and word.lower() not in (x.lower() for x in seen):
            seen.append(word)
print(len(seen))

或者更好(如果你只想要长度,而不是单词本身):

print(len(set(word.lower() for line in s for word in line.strip().split() if word.isalnum()))

答案 1 :(得分:0)

我想这段代码可以帮助你排成几行。基本上这个想法是使用set。

st = set([])
for lines in s.split('\n'):
    print(lines)
    st=set(lines.split()).union(st)
print(st)