有没有办法将此字符串缩减为3个单词?

时间:2019-07-31 03:51:05

标签: python

我在下面发布的代码存在多个问题,因为正如我在上一篇文章中所说,我是编码新手,我自己找东西也很麻烦:(

我的目标是获取用户输入的内容,将其缩小到3个单词,然后按字母顺序对其进行排序。我这样做正确吗?

可能不是因为它用逗号将其打印出来。例如,以“我喜欢吃蛋糕”作为输入,输出为:

"'cake',", "'eating'", "'i',", "'like',"

但是我希望它是:

cake, eating, like

非常感谢您的帮助。

input = input(" ")
prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ','  ','   '}
processedinput = [word for word in re.split("\W+",input) if word.lower() not in prohibited]
processed = processedinput
processed.sort(key = len)
processed = re.sub('[\[\]]','',repr(processedinput)) #removes brackets
keywords = processed
keywords = keywords.split()
keywords.sort(key=str.lower)
keywords.sort()
keywords = re.sub('[\[\]]','',repr(keywords))
str(keywords)
print(keywords)

1 个答案:

答案 0 :(得分:0)

您的代码的第一个问题是input = input()。问题在于input是您正在调用的函数的名称,但是您正在用用户的字符串覆盖input。因此,如果您尝试再次运行input(),它将失败。

第二个问题是您对清单有误解。在下面的代码中,tokens是一个列表,而不是字符串。列表中的每个元素都是一个字符串。因此,无需去除括号等。您可以按照 reverse 的长度顺序对列表(代码的正确部分)进行排序,然后打印前三个单词。

代码:

import re

user_input = input(" ")
prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ','  ','   '}
tokens = [word for word in re.split("\W+", user_input) if word.lower() not in prohibited]
tokens.sort(key=len, reverse=True)

print(tokens[0], end=', ')
print(tokens[1], end=', ')
print(tokens[2])

输入:

i like eating cake

输出:

eating, like, cake