在同一时间替换多个字符串

2024-09-26 22:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字符串“abcd”

现在我想把所有的a都换成d,把d都换成a。问题是字符串。替换在这种情况下不起作用。在

“abcd”。替换('a','d')。替换('d','a')

abca

预期输出为“dbca”

我要怎么做?在


Tags: 字符串情况abcddbcaabca
3条回答

您可以尝试python替换配方:

string_word="abcd"

data=list(string_word)
replace_index=list({j:i for j,i in enumerate(data) if i=='a' or i=='d'}.keys())

data[replace_index[0]],data[replace_index[1]]=data[replace_index[1]],data[replace_index[0]]

print("".join(data))

输出:

^{pr2}$

您可以使用.translate()。在

Return a copy of the string in which each character has been mapped through the given translation table.

https://docs.python.org/3/library/stdtypes.html#str.translate

示例:

>>> "abcd".translate(str.maketrans("ad","da"))
'dbca'

可以使用列表理解来切换所需的值

x = "abcd"
''.join(['d' if i == 'a' else 'a' if i == 'd' else i for i in x])

'dbca'


没有单子

^{pr2}$

'dbca'


时机

In [1]: x = "abcd"*10000000

In [2]: %timeit ''.join('d' if i == 'a' else 'a' if i == 'd' else i for i in x)
5.78 s ± 152 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [3]: %timeit ''.join(['d' if i == 'a' else 'a' if i == 'd' else i for i in x])
4.49 s ± 157 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

事实证明,列表理解稍微快一点。在

相关问题 更多 >

    热门问题