咨询:如何将网页抓取数据转换为固定规模的二维数组?
解决方案
步骤说明
- 先处理原始文本,按行分割并过滤空行,得到干净的条目列表
- 将每4条条目(对应单个数据项的NAME/DATE/ITEMS/PRICE)组成基础数据组
- 再将这些基础数据组按每3个一组打包,生成目标二维数组
代码实现
# 假设原始文本存储在value变量中 value = """ NAME[1] DATE[1] ITEMS[1] PRICE[1] NAME[2] DATE[2] ITEMS[2] PRICE[2] NAME[3] DATE[3] ITEMS[3] PRICE[3] NAME[4] DATE[4] ITEMS[4] PRICE[4] NAME[5] DATE[5] ITEMS[5] PRICE[5] NAME[6] DATE[6] ITEMS[6] PRICE[6] """ # 1. 分割行并过滤空行 lines = [line.strip() for line in value.split('\n') if line.strip()] # 2. 生成单个数据项的分组(每组4条) item_groups = [lines[i:i+4] for i in range(0, len(lines), 4)] # 3. 按每3个数据项组打包成二维数组 target_array = [item_groups[i:i+3] for i in range(0, len(item_groups), 3)] # 格式化输出为你期望的样式 print('[') for idx, sub_arr in enumerate(target_array): print(' [') for group in sub_arr: print(' [') print(f' {group[0]}') print(f' {group[1]}') print(f' {group[2]}') print(f' {group[3]}') print(' ]') print(' ]' + (',' if idx < len(target_array)-1 else '')) print(']')
关键说明
- 你之前使用
split(',')是错误的,原始数据按换行分隔,应该用split('\n')处理 - 两次用列表推导式+步长分割的方式,是Python处理这类分组需求最简洁高效的写法,时间复杂度为O(n),无需额外循环判断
内容的提问来源于stack exchange,提问作者Brenner Haverlock
相关产品推荐
相关产品推荐

