我是Python新手。 我想要反转一个字符串的单词而不反转整个字符串。重复的话语不应该被颠倒过来。
我想要这样的东西 -
输入 - Dom是一位艺术家,Dom住在英国。 输出 - Dom si na tsitra,Dom sevil ni KU。
答案 0 :(得分:2)
您可以使用str.split创建一个包含每个单词的列表,collections.Counter可以轻松计算该列表中的每个单词。
from string import punctuation # '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
from collections import Counter
def reverse_text(text):
punc = ''
# remove any punctuation from end of text
while text[-1] in punctuation:
punc = text[-1] + punc
text = text[:-1]
# reverse text and add punctuation back on
return text[::-1] + punc
inp = "Dom is an artist, Dom lives in UK"
words = inp.split() # split input
counter = Counter(words) # count each word. Note: counts exact matches.
# rejoin the string reversing any unique words
res = ' '.join( reverse_text(word) if counter[word] == 1 else word for word in words )
print(res)
# Output
Dom si na tsitra, Dom sevil ni KU
答案 1 :(得分:1)
您只需要计数器包来计算句子中每个唯一单词的数量。然后,您将遍历您的字符串并查看单词的计数是否等于1,在这种情况下,您将反转该单词,另一方面,您只需将其保留原样。然后,您将每个结果项目附加到一个emptey列表并将其与空格连接(即&#39;&#39; .join)
from collections import Counter
your_string = "Dom is an artist, Dom lives in UK"
lst = []
counts = Counter(your_string.split())
for i in your_string.split():
if counts[i]==1:lst.append(i[::-1])
else: lst.append(i)
' '.join(i for i in lst)