Python:你究竟能拿出一个字符串,拆分它,反转它并再次将它连接起来?

时间:2010-09-02 12:54:54

标签: python string join split reverse

如何使用python将字符串拆分,拆分,反转并再次连接在一起,而不使用括号,逗号等?

5 个答案:

答案 0 :(得分:52)

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

或更简单:

>>> tmp = "a,b,cde"
>>> ''.join(tmp.split(',')[::-1])
'cdeba'

这里的重要部分是split functionjoin function。要反转列表,您可以使用reverse()来反转列表或切片语法[::-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

答案 2 :(得分:0)

你是说这个?

from string import punctuation, digits

takeout = punctuation + digits

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

答案 3 :(得分:0)

有人要求我不要使用任何内置函数。因此,我为这些任务编写了三个函数。这是代码-

#include <functional>
#include <type_traits>

template <typename>
struct getTypeFirstArg;

template <typename R, typename T1, typename ... Ts>
struct getTypeFirstArg<std::function<R(T1, Ts...)>>
 { using type = T1; };

template <typename F>
void foo (F f)
 {
   using T = std::remove_cv_t<
                std::remove_reference_t<
                   typename getTypeFirstArg<decltype(std::function{f})>::type>>;

   static_assert( std::is_same_v<T, int> );
 }

int main ()
 {
   foo([&](int const &){});
 }

请记住,这是一种更简单的解决方案。可以对此进行优化,请尝试这样做。谢谢!

答案 4 :(得分:0)

不适合 100% 这个特定的问题,但如果你想从后面分开,你可以这样做:

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

此代码在符号“/”处从后面拆分一次。