Python字符串插入^字符:将“SUPER MAN”转为“S^U^P^E^R M^A^N”
解决字符串插入分隔符的问题
哈哈,这个坑我踩过!你用print("SUPER MAN".replace("", "^"))得到^S^U^P^E^R^ ^M^A^N^,是因为空字符串会匹配每一个字符的前后位置——包括字符串的开头、结尾,还有空格的前后,所以所有缝隙都被填上了^,这显然不是你想要的效果。
想要得到S^U^P^E^R M^A^N,也就是只在每个单词的字母之间插入^,同时保留单词间的空格,这里有两种简单的解决方法:
方法1:拆分单词+字符拼接(直观易懂)
把原字符串按空格拆成独立单词,对每个单词的字符用^连接,最后再用空格把处理后的单词拼回去:
original = "SUPER MAN" processed = " ".join(["^".join(word) for word in original.split()]) print(processed) # 输出: S^U^P^E^R M^A^N
这个方法的好处是逻辑清晰,不管单词里是大写还是小写字母都能适用,扩展性很强。
方法2:正则表达式(简洁高效)
用正则的正向肯定预查,只匹配两个字母之间的位置,然后替换成^:
import re original = "SUPER MAN" processed = re.sub(r'(?<=[A-Z])(?=[A-Z])', '^', original) print(processed) # 输出: S^U^P^E^R M^A^N
这里的正则(?<=[A-Z])(?=[A-Z])表示:匹配一个位置,它的前一个字符是大写字母,后一个字符也是大写字母——这样就只会在单词内部的字母之间插入分隔符,不会碰空格的位置。如果你的字符串里有小写字母,可以把正则改成(?<=[a-zA-Z])(?=[a-zA-Z])。
内容的提问来源于stack exchange,提问作者denzel archie
相关产品推荐
相关产品推荐

