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

如何自动生成零件号中0与O的所有组合以创建同义词列表?

自动生成零件号0/O替换的所有组合方案

针对零件号无固定格式、0随机分布的情况,以下两种方法可以自动生成所有0与O的混合组合,直接导出为表格作为同义词使用:

方法一:Python脚本批量处理(推荐,高效灵活)

用Python递归生成所有替换组合,适合批量处理大量零件号,输出CSV格式直接可用。

代码示例

import csv

def generate_variants(part_num):
    # 递归生成所有0/O替换的可能组合
    if not part_num:
        return ['']
    first_char = part_num[0]
    rest_variants = generate_variants(part_num[1:])
    if first_char == '0':
        # 遇到0时,同时保留0和生成O的分支
        return [f'0{var}' for var in rest_variants] + [f'O{var}' for var in rest_variants]
    else:
        # 非0字符直接保留
        return [f'{first_char}{var}' for var in rest_variants]

# 1. 批量处理零件号并导出CSV
original_parts = ["00h-1038-k0", "AJO-9000", "X0Y-7Z0"]  # 替换为你的零件号列表
with open('part_synonyms.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['原零件号', '同义词'])
    for part in original_parts:
        all_variants = generate_variants(part)
        # 排除原零件号本身(若不需要可删除该行)
        synonyms = [var for var in all_variants if var != part]
        for syn in synonyms:
            writer.writerow([part, syn])

使用说明

  1. 将你的零件号列表替换到original_parts中;
  2. 运行脚本后会生成part_synonyms.csv文件,包含原零件号和所有对应的0/O替换同义词;
  3. 若零件号存储在现有CSV中,可添加代码读取文件(比如用csv.reader),无需手动输入列表。

方法二:Excel VBA宏(适合熟悉Excel的用户)

通过VBA在Excel内直接生成组合,无需额外工具。

代码示例

Sub GeneratePartSynonyms()
    Dim originalPart As String
    Dim variants As Collection
    Dim tempVariants As Collection
    Dim i As Integer, rowNum As Integer
    Dim currentChar As String
    Dim tempStr As String
    
    ' 初始化变量
    rowNum = 1 ' 结果起始行
    Set variants = New Collection
    variants.Add ""
    
    ' 遍历A列所有零件号(可根据实际修改列)
    For Each cell In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
        originalPart = cell.Value
        Set variants = New Collection
        variants.Add ""
        
        ' 逐个字符生成组合
        For i = 1 To Len(originalPart)
            currentChar = Mid(originalPart, i, 1)
            Set tempVariants = New Collection
            
            For Each var In variants
                If currentChar = "0" Then
                    tempVariants.Add var & "0"
                    tempVariants.Add var & "O"
                Else
                    tempVariants.Add var & currentChar
                End If
            Next var
            
            Set variants = tempVariants
        Next i
        
        ' 将结果写入B、C列(原零件号、同义词)
        For Each var In variants
            If var <> originalPart Then
                Cells(rowNum, "B").Value = originalPart
                Cells(rowNum, "C").Value = var
                rowNum = rowNum + 1
            End If
        Next var
    Next cell
    
    Set variants = Nothing
    Set tempVariants = Nothing
    MsgBox "同义词生成完成!"
End Sub

使用说明

  1. 打开Excel,将原零件号放在A列;
  2. 按Alt+F11打开VBA编辑器,插入新模块,粘贴上述代码;
  3. 运行宏,结果会自动写入B(原零件号)、C(同义词)列;
  4. 若需要调整列位置,修改代码中的Range("A1:A"...)和Cells(rowNum, "B")等参数即可。

注意事项

  • 组合数量为2^n(n为零件号中0的个数),比如含3个0的零件号会生成7个同义词(排除原号);
  • 若零件号中0的数量极多(比如超过10个),生成的组合会非常庞大,可根据实际需求筛选(比如只替换部分0),但一般搜索系统支持批量导入,无需担心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:40:21