所有单词在字符串中的位置

时间:2015-12-04 07:17:32

标签: python string integer position

我需要接受一个句子。找到该句子中的所有单词。然后找到句子中每个单词的位置。然后制作一个 .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)

但如果重复这个词,它会将它视为同一个词。

2 个答案:

答案 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]

我希望它可以帮到你。