是否有一种优雅的方式来执行不止一步的 python 切片?
例如,给定一个输入字符串,创建包含以下位置的字符的字符串:1,4,6,9,11,14,16,19 等等
输入示例:
s = "abcdefhijklmnopqrstuvwxyz"
输出:
out = "behkmpruwz"
最佳答案
这是一个可能满足您要求的正则表达式解决方案:
s = "abcdefhijklmnopqrstuvwxyz"
output = re.sub(r'.(.)..(.)', '\\1\\2', s)
print(s)
print(output)
打印:
abcdefhijklmnopqrstuvwxyz
behkmpruwz
该模式一次匹配五个字符,捕获捕获组 \1
和 \2
中的第二个和第五个字符。然后,它只是将这五个字符替换为两个捕获的单个字符。
这恰好适合您的输入字符串,因为它的长度恰好是 5 的倍数。请注意,我的模式不会对长度超过 5 倍数的任何字符 1 到 4 进行任何替换。
关于python 字符串以交替步幅切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57651904/