Skip to main content
 首页 » 编程设计

python之根据预定义的字符类型拆分字符串

2025年05月04日30虾米哥

我有一个预定义的 character->type 字典。例如,'a' - 是小写字母,1 是数字,')' 是标点符号等。 使用以下脚本,我标记给定字符串中的所有字符:

labels='' 
for ch in list(example): 
    try: 
        l = character_type_dict[ch] 
        print(l) 
        labels = labels+l 
    except KeyError: 
        labels = labels+'o' 
        print('o') 
labels 

例如,给定 “1,234.45kg(公制)” 作为输入,代码生成 dpdddpddwllwpllwllllllwllllllp 作为输出。

现在,我想根据组拆分字符串。输出应如下所示:

['1',',','234','.','45','kg',' ','(','in',' ','metric',' ','system',')'] 

也就是说,它应该根据字符类型的边框进行分割。 有什么想法可以有效地完成吗?

请您参考如下方法:

labels 是错误的(在您的示例中是 'dpddddpddwllwpllwllllllwllllllp' 但我相信它应该是 'dpddddpddllwpllwllllllwllllllp')

无论如何,你可以 使用 滥用itertools.groupby:

from itertools import groupby 
 
example = "1,234.45kg (in metric system)" 
labels = 'dpdddpddllwpllwllllllwllllllp' 
 
output = [''.join(group) 
          for _, group in groupby(example, key=lambda ch: labels[example.index(ch)])] 
 
print(output) 
# ['1', ',', '234', '.', '45', 'kg', ' ', '(', 'in', ' ', 'metric', ' ', 'system', ')']