我需要接受一个句子。找到该句子中的所有单词。然后找到句子中每个单词的位置。然后制作一个 .txt 文档,其中包含所有单词及其位置。
Sentence=some people dont like coding but some people do like coding.
Words=some people dont like coding but do
Position = 1,2,3,4,5,6,1,2,6,4,5
但是文字中需要输出单词和数字。
有什么想法吗?
更新:我现在有了这个。
sentence= input("Enter a sentence")
words=sentence.split (" ")
for (i, subword) in enumerate(words):
print (i+1)
但如果重复这个词,它会将它视为同一个词。
答案 0 :(得分:0)
您必须将其排名保持在容器中的唯一单词。如果性能是一个问题,你可以在OrderedDict
模块中使用collections
,或者只是一个字典,并根据值对其进行排序(键将是单词,值为排名)。
然后迭代初始列表,查看单词容器中的单词是否输入。如果不是,请将其添加到容器中,然后在任何情况下将等级存储到位置列表。
这是一个使用列表作为唯一字容器的简单实现(列表自动使用index
方法给出排名):
words = sentence.split(" ")
uniqwords = []
position = []
for word in words:
if word in uniqwords:
position.append(uniqwords.index(word) + 1)
else:
uniqwords.append(word)
position.append(len(uniqwords)) # index of a newly appended elt is len - 1 ...
答案 1 :(得分:0)
我将向您展示一些可能对您有帮助的示例代码。而且你还需要对你的句子进行一些预处理,例如将句子分成',','。',':'等等。 简单的代码如下:
Sentence='some people dont like coding but some people do like coding'
sentList = Sentence.split(' ')
position = [word.index(x)+1 for x in sentList]
结果如下:
In [18]: print(position)
[1, 2, 3, 4, 5, 6, 1, 2, 7, 4, 5]
我希望它可以帮到你。