python - 字符串与特定变量字符的组合

标签 python string

如何收集字符串的组合,其中某些字符(但不是全部)是可变的?

换句话说,我有一个输入字符串和一个字符映射表。字符映射表指定哪些字符是可变的,以及它们可以被替换为什么。然后该函数产生所有可能的组合。

为了将其放在上下文中,我正在尝试收集可能被 OCR 引擎误解的 OCR 输出字符串的可能变化。

输入示例:

"ABCD"

字符映射表示例:

dict(
    B=("X", "Z"),
    D=("E")
)

预期输出:

[
    "ABCD",
    "ABCE",
    "AXCD",
    "AXCE",
    "AZCD",
    "AZCE"
]

最佳答案

您可以使用 itertools.product :

>>> from itertools import product
>>> s = "ABCD"
>>> d = {"B": ["X", "Z"], "D": ["E"]}
>>> poss = [[c]+d.get(c,[]) for c in s]
>>> poss
[['A'], ['B', 'X', 'Z'], ['C'], ['D', 'E']]
>>> [''.join(p) for p in product(*poss)]
['ABCD', 'ABCE', 'AXCD', 'AXCE', 'AZCD', 'AZCE']

请注意,我创建了 d["D"]为了保持一致性,一个列表而不是简单的字符串。

关于python - 字符串与特定变量字符的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986559/

相关文章:

c - 返回字符串的子串

javascript - 删除字符串中第四个斜杠“/”之后的所有字符

python - 如何跨多列循环类似的 python pandas 代码

python - FFMPEG 检测视频中的彩条和色调

python - zip(*) 是如何生成 n-gram 的?

python - h5py读取时间在读取速度上有随机且剧烈的波动

python - 如何使用元组查询 pandas 列

c - C:如何加载,存储和打印字符串和整数的混合矩阵

python - 如何创建一个 python 脚本,以便在目录中的 csv 文件在过去 24 小时内未更新时发送电子邮件?

c# - 在 if 语句中实现字符串和 OR 函数 (||)