我需要一个程序的帮助,该程序可以识别句子中的各个单词,将它们存储在列表中,并用该单词在列表中的位置替换原始句子中的每个单词。这是我到目前为止所拥有的。
例如:
'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR' COUNTRY
将重新创建为1,2,3,4,5,6,7,8,9,1,3,9,6,7,8,4,5
from collections import OrderedDict sentence = input("Please input a sentence without punctuation").upper() punctuation = ("`1234567890-=¬!£$%^&*()_+\|[];'#,./{}:@~<>?") FilteredSentence = ("") for char in sentence: if char not in punctuation: FilteredSentence = FilteredSentence+char FilteredSentence = FilteredSentence.split(" ") refined = list(OrderedDict.fromkeys(FilteredSentence))
我设法确定了列表中的各个单词,但是我研究了如何用各个单词的位置替换原始列表中的单词。
您还可以创建一个字典,将单词和单词的初始位置映射在一起,然后用它来替换单词和单词的各自位置。
>>> s = 'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY' >>> >>> >>> l = s.split() >>> l ['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU', 'ASK', 'WHAT', 'YOU', 'CAN', 'DO', 'FOR', 'YOUR', 'COUNTRY'] >>> >>> d = dict((s, l.index(s)+1) for s in set(l)) >>> d {'DO': 7, 'COUNTRY': 5, 'CAN': 6, 'WHAT': 3, 'ASK': 1, 'YOUR': 4, 'NOT': 2, 'FOR': 8, 'YOU': 9} >>> list(map(lambda s: d[s], l)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 9, 6, 7, 8, 4, 5] >>>