1/6/25Less than 1 minute
Basic Functions
Using python write basic functions for convertor
import re
import string
def generate_letter_code():
    # All lower case
    letters = string.ascii_lowercase
    
    i = 1
    while True:
        # All the combination of lenght of i using letters
        for combination in product(letters, repeat=i):
            yield ''.join(combination)
        i += 1
def get_lstrip(astr):
    return astr[:len(astr) - len(astr.lstrip())]
def get_split(line_string):
    # 定义正则表达式
    pattern = r"([-]{2,}>)"
    # 使用 re.findall 提取匹配的部分
    return re.findall(pattern, line_string)
def get_items(line_string):
    return list(map(lambda x: x.strip(), re.split(r"[-]{2,}>", line)))Example
data = """
graph LR:
  王东 ---> 重疾
王东 ---> 住院报销
    王东 --> 意外
王东 ---> 养老
 重疾 ---> 吉祥至尊两全(新华)保额10万
重疾 ---> 健康无忧(新华)保额30万
住院报销 ---> 康健华尊(新华)
住院报销 ---> 吉祥至尊(新华)
意外 ---> 安心百分百
意外 ---> 百万任我行
"""
lines = data.strip().split("\n")
code = generate_letter_code()
code_item = {}
for line in lines:
    items = get_items(line)
    for item in items:
        code_item[item] = code_item[item] if code_item.__contains__(item) else next(code)
    if len(items) == 2:
        print(f"{get_lstrip(line)} {code_item[items[0]]}[{items[0]}] {get_split(line)[0]} {code_item[items[1]]}[{items[1]}]")
    else:
        print(line)