在字符串中交错使用“^”字符

2024-03-28 17:25:09 发布

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

我现在的任务是用"S^U^P^E^R M^A^N"替换"SUPER MAN"。你知道吗

我试过print("SUPER MAN".replace("" "", "^")),但最终还是^S^U^P^E^R^ ^M^A^N^。你知道吗

我怎样才能解决这个问题?你知道吗


Tags: replaceprintsuperman
3条回答

您希望将^{}方法与^{}一起使用。你知道吗

首先split"SUPER MAN"通过一个空格得到:

words = "SUPER MAN".split()
["SUPER", "MAN"]

然后,对于每个条目,使用join"^"分隔每个字符:

new_words = map(lambda x: "^".join(x), words)
["S^U^P^E^R", "M^A^N"]

然后使用join将其转换回一个由空格分隔的字符串,得到的代码是:

words = "SUPER MAN".split()
new_words = map(lambda x: "^".join(x), words)
print " ".join(new_words)

输出:S^U^P^E^R M^A^N

代码的作用:

首先,请注意传递到replace的第一个参数不是一个空格,这可能是您想要的,而是表达式"" "",这是一种进行字符串连接的隐式方法。你知道吗

因此,"SUPER MAN".replace("" "", "^")变为"SUPER MAN".replace("", "^"),它用"^"替换""的每个出现。你知道吗

这样一个操作的结果一开始看起来可能有点定义不清,但是在Python中,由于可以将字符串s视为等于"" + "".join(s) + "",因此用"^"替换""的每个出现将产生您看到的结果:每个字母之间的"^"和结尾的"^"。你知道吗

" "作为第一个参数传递给replace是不起作用的,因为它将用"^"替换空格(特别是中间的空格),因此得到"SUPER^MAN"。你知道吗

在将字符串“SUPER MAN”传递给replace()之前,您是否尝试过修剪它?然后您可以始终使用StringBuilder(假设您使用的是Java),然后使用DeleteCharAt()方法手动删除额外的“^”。你知道吗

>>> import re
>>> re.sub(r"(\w)(?=\w)", r"\1^", "SUPER MAN")
'S^U^P^E^R M^A^N'

更多关于为什么这样做的信息:https://docs.python.org/3/library/re.html

相关问题 更多 >