如何使用python将字符串拆分,拆分,反转并再次连接在一起,而不使用括号,逗号等?
答案 0 :(得分:52)
>>> tmp = "a,b,cde"
>>> tmp2 = tmp.split(',')
>>> tmp2.reverse()
>>> "".join(tmp2)
'cdeba'
或更简单:
>>> tmp = "a,b,cde"
>>> ''.join(tmp.split(',')[::-1])
'cdeba'
这里的重要部分是split function和join 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]
此代码在符号“/”处从后面拆分一次。