Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以将值放在预设的句子中,并在有重复的单词时替换它们?_Python_Regex - Fatal编程技术网

Python 有没有一种方法可以将值放在预设的句子中,并在有重复的单词时替换它们?

Python 有没有一种方法可以将值放在预设的句子中,并在有重复的单词时替换它们?,python,regex,Python,Regex,为了找到一个可以工作的函数,我已经浏览了很多函数,但是我没有运气。 我需要创建一个程序,该程序将有一个输入/预设字符串变量,其中已经有一个句子。 我已经列出了这个句子,所以每个单词都有值 sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT CAN YOU DO FOR YOUR COUNTRY" listSentence = sentence.split(" ") Ask的值为0,而不是1,What的值为2,Your的值为

为了找到一个可以工作的函数,我已经浏览了很多函数,但是我没有运气。 我需要创建一个程序,该程序将有一个输入/预设字符串变量,其中已经有一个句子。 我已经列出了这个句子,所以每个单词都有值

sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT CAN YOU DO FOR YOUR COUNTRY"
listSentence = sentence.split(" ")
Ask的值为0,而不是1,What的值为2,Your的值为3。 等等
Ask then在第9个位置重复,因此我想知道如何使所有重复的单词都具有第一个值。因此,第9个ask的值应为0。第10个单词,值为3的单词,依此类推。

您可以使用字典将单词的第一个索引保留为关键字,并将列表中的单词作为值保留为实际索引:

>>> words = sentence.split()
>>> d={}
>>> for i,j in enumerate(words):
...   d.setdefault(words.index(j),[]).append((i,j))
... 
>>> d
{0: [(0, 'ASK'), (9, 'ASK')], 1: [(1, 'NOT')], 2: [(2, 'WHAT'), (10, 'WHAT')], 3: [(3, 'YOUR'), (15, 'YOUR')], 4: [(4, 'COUNTRY'), (16, 'COUNTRY')], 5: [(5, 'CAN'), (11, 'CAN')], 6: [(6, 'DO'), (13, 'DO')], 7: [(7, 'FOR'), (14, 'FOR')], 8: [(8, 'YOU'), (12, 'YOU')]}
>>> 
如果您想要索引列表,可以使用如下列表:

>>> [words.index(i) for i in words]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 5, 8, 6, 7, 3, 4]
也许是这样:

d = {}
i = 0
values = []
for i, word in enumerate(sentence.split(" ")):
    if not word in d:
        d[word] = i
    values += [d[word]]
结果
列表:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 5, 8, 6, 7, 3, 4]

您可以创建一个字典,将单词作为关键字,第一个位置作为值。对于每个单词,检查单词是否在词典中,如果不在词典中-将其与位置一起插入并将位置添加到输出中,如果是,则从词典中获取位置并将其添加到输出中

这里的目标是什么?你想得到什么输出?我想得到这些单词,并将它们的新值保存到一个txt文件中。@Mureinik:我想很清楚,OP need
[0,1,2,3,4,5,6,7,8,0,2,5,8,6,7,3,4]
。是的,
[words.index(I)for I in words]
是最好的方法。那么答案在哪里?我认为这应该是一个评论。