我有一个预定义的 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', ')']
