如何在Python中将符号字符串按13/39个元素分组拆分
解决方案
问题出在你直接对字符串用itertools.batched——字符串是字符的迭代器,所以它会把每个字符(包括逗号)拆成单独元素,完全不是你要的按符号分组。正确思路是先把逗号分隔的字符串还原成符号列表,再拆分,最后重新拼成子字符串。
具体代码实现
假设你的nse_string格式是"SYMBOL1,SYMBOL2,SYMBOL3,...":
第一步:把字符串转回符号列表
这是最关键的一步,先拆分出每个独立的符号:
import itertools # 把逗号分隔的字符串拆成符号列表 symbols_list = nse_string.split(',')
第二步:按指定大小拆分并生成子字符串
按每组13个符号拆分
# 用itertools.batched拆分列表 batches_13 = itertools.batched(symbols_list, 13) # 把每个子批重新拼成逗号分隔的字符串 substrings_13 = [','.join(batch) for batch in batches_13]
按每组39个符号拆分
batches_39 = itertools.batched(symbols_list, 39) substrings_39 = [','.join(batch) for batch in batches_39]
不用itertools的手动拆分方法
如果不想依赖itertools,直接用列表切片也能实现:
# 每组13个的手动拆分 substrings_13 = [] for idx in range(0, len(symbols_list), 13): # 切片取当前组的符号,再拼接成字符串 substr = ','.join(symbols_list[idx:idx+13]) substrings_13.append(substr) # 每组39个的手动拆分同理 substrings_39 = [] for idx in range(0, len(symbols_list), 39): substr = ','.join(symbols_list[idx:idx+39]) substrings_39.append(substr)
总结
核心就是别直接对字符串用拆分工具,先把字符串还原成符号元素的列表,再按数量分组,最后重新拼接成子字符串——这样就能保证拆分的是完整的符号,而不是单个字符。
内容的提问来源于stack exchange,提问作者Hamza Ahmed
相关产品推荐
相关产品推荐

