You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字符串按3位拆分替换中间字符后排序问题求助

完整实现代码

import random
import string

# 原始输入字符串
input_str = "Geeksforgeek"
segment_length = 3

# 第一步:拆分字符串为3字符片段
# 可提前加校验:assert len(input_str) % 3 == 0, "字符串长度需为3的倍数"
segments = [input_str[i:i+segment_length] for i in range(0, len(input_str), segment_length)]

# 第二步:替换每个片段的中间字符
char_pool = string.ascii_letters  # 随机字符池,可按需修改为包含数字、符号等
processed_list = []
for seg in segments:
    # 仅处理长度为3的片段,不足3的可按需选择丢弃、补齐等逻辑
    if len(seg) != 3:
        continue
    existing_chars = set(seg)
    # 生成和当前片段所有字符都不重复的随机字符
    while True:
        random_mid = random.choice(char_pool)
        if random_mid not in existing_chars:
            break
    # 替换中间位(索引为1的位置)生成新片段
    new_seg = seg[0] + random_mid + seg[2]
    processed_list.append(new_seg)

# 第三步:按字母顺序排序,需忽略大小写可改成 processed_list.sort(key=str.lower)
processed_list.sort()

print(processed_list)

逻辑说明

  • 片段长度兼容:如果你的需求要求必须所有片段都是3位,可提前加长度校验,避免出现长度不足的片段;如果允许不足3位的片段保留,可自行调整对应位置的替换逻辑。
  • 随机字符范围:可修改char_pool的取值调整随机字符的可选范围,比如string.ascii_letters + string.digits就可以同时包含大小写字母和数字。
  • 排序规则:默认按ASCII编码顺序排序,区分大小写,需要忽略大小写可修改sort方法的key参数。

内容的提问来源于stack exchange,提问作者otoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:06:09