Python:如何将一个字符串拆分、反转并重新连接起来?

42

如何使用Python取出字符串并进行拆分、反转和重新拼接,同时去掉括号、逗号等标点符号?


2
你要用哪个字符来分割字符串?空格吗? - Manoj Govindan
33
这里面有一个关于密西·艾莉特的笑话。 - detly
3
通过 "iputmystringdownsplititandreverseit"[::-1] 生成了字符串 "@detly tiesreverdnatitilpsnwodgnirtsymtupi?"。我会尽力将其翻译成中文,使其保持原意并更加易于理解。 - setophaga
5个回答

77
>>> tmp = "a,b,cde"
>>> tmp2 = tmp.split(',')
>>> tmp2.reverse()
>>> "".join(tmp2)
'cdeba'

更简单地说:

>>> tmp = "a,b,cde"
>>> ''.join(tmp.split(',')[::-1])
'cdeba'
重要的部分是split函数join函数。要反转列表,您可以使用reverse()函数,它会就地反转列表,或者使用切片语法[::-1]返回一个新的反转列表。

7
另一种方式是''.join(reversed(tmp.split(','))),这种方法更加明确一些。 - carl

4

虽然不完全符合这个问题,但如果你想从后面分割,可以像这样做:

theStringInQuestion[::-1].split('/', 1)[1][::-1]

这段代码从后面按照斜杠符号 '/' 进行一次分割。


2
你的意思是像这样吗?
import string
astr='a(b[c])d'

deleter=string.maketrans('()[]','    ')
print(astr.translate(deleter))
# a b c  d
print(astr.translate(deleter).split())
# ['a', 'b', 'c', 'd']
print(list(reversed(astr.translate(deleter).split())))
# ['d', 'c', 'b', 'a']
print(' '.join(reversed(astr.translate(deleter).split())))
# d c b a

0
你是指这个吗?
from string import punctuation, digits

takeout = punctuation + digits

turnthis = "(fjskl) 234 = -345 089 abcdef"
turnthis = turnthis.translate(None, takeout)[::-1]
print turnthis

0
我被要求在不使用任何内置函数的情况下完成这项任务。因此,我为这些任务编写了三个函数。以下是代码-
def string_to_list(string):
'''function takes actual string and put each word of string in a list'''
list_ = []
x = 0 #Here x tracks the starting of word while y look after the end of word.
for y in range(len(string)):
    if string[y]==" ":
        list_.append(string[x:y])
        x = y+1
    elif y==len(string)-1:
        list_.append(string[x:y+1])
return list_

def list_to_reverse(list_):
'''Function takes the list of words and reverses that list'''
reversed_list = []
for element in list_[::-1]:
    reversed_list.append(element)
return reversed_list

def list_to_string(list_):
'''This function takes the list and put all the elements of the list to a string with 
space as a separator'''
final_string = str()
for element in list_:
    final_string += str(element) + " "
return final_string

#Output
text = "I love India"
list_ = string_to_list(text)
reverse_list = list_to_reverse(list_)
final_string = list_to_string(reverse_list)
print("Input is - {}; Output is - {}".format(text, final_string))
#op= Input is - I love India; Output is - India love I 

请记住,这是其中一种较简单的解决方案。它可以进行优化,因此请尝试。谢谢!

这看起来一点也不简单,但是任务可以通过一行代码完成,正如其他答案已经展示的那样。 - BCArg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接