在提取数据中需要将长字符串分割为列表,并保持列表长度不变。我一开始想的方法是在for循环中,先用split函数将每个字符串分割为列表,然后利用append函数添加到新列表中,但是由于对for循环的逻辑顺序不太清楚,最后得到的结果有些出入。
需要处理的数据为:
data_4=
[[' 26 1.3000000 8.49156100E+05 0 0 100.000000\n',
' 27 1.3500000 8.81815950E+05 8 8 92.000000\n',
' 28 1.4000000 9.14475800E+05 16 24 76.000000\n',
' 29 1.4500000 9.47135650E+05 76 100 .000000\n'],
[' 24 1.2000000 7.83836400E+05 0 0 100.000000\n',
' 25 1.2500000 8.16496250E+05 5 5 95.000000\n',
' 26 1.3000000 8.49156100E+05 26 31 69.000000\n',
' 27 1.3500000 8.81815950E+05 66 97 3.000000\n',
' 28 1.4000000 9.14475800E+05 3 100 .000000\n'],
[' 23 1.1500000 7.51176550E+05 0 0 100.000000\n',
' 24 1.2000000 7.83836400E+05 2 2 98.000000\n',
' 25 1.2500000 8.16496250E+05 7 9 91.000000\n',
' 26 1.3000000 8.49156100E+05 13 22 78.000000\n',
' 27 1.3500000 8.81815950E+05 17 39 61.000000\n',
' 28 1.4000000 9.14475800E+05 19 58 42.000000\n',
' 29 1.4500000 9.47135650E+05 23 81 19.000000\n',
' 30 1.5000000 9.79795500E+05 19 100 .000000\n']]
最后需要的数据格式如下:
[[['26', '1.3000000', '8.49156100E+05', '0', '0', '100.000000\n'],
['27', '1.3500000', '8.81815950E+05', '8', '8', '92.000000\n'],
['28', '1.4000000', '9.14475800E+05', '16', '24', '76.000000\n'],
['29', '1.4500000', '9.47135650E+05', '76', '100', '.000000\n']],
[['24', '1.2000000', '7.83836400E+05', '0', '0', '100.000000\n'],
['25', '1.2500000', '8.16496250E+05', '5', '5', '95.000000\n'],
['26', '1.3000000', '8.49156100E+05', '26', '31', '69.000000\n'],
['27', '1.3500000', '8.81815950E+05', '66', '97', '3.000000\n'],
['28', '1.4000000', '9.14475800E+05', '3', '100', '.000000\n']],
[['23', '1.1500000', '7.51176550E+05', '0', '0', '100.000000\n'],
['24', '1.2000000', '7.83836400E+05', '2', '2', '98.000000\n'],
['25', '1.2500000', '8.16496250E+05', '7', '9', '91.000000\n'],
['26', '1.3000000', '8.49156100E+05', '13', '22', '78.000000\n'],
['27', '1.3500000', '8.81815950E+05', '17', '39', '61.000000\n'],
['28', '1.4000000', '9.14475800E+05', '19', '58', '42.000000\n'],
['29', '1.4500000', '9.47135650E+05', '23', '81', '19.000000\n'],
['30', '1.5000000', '9.79795500E+05', '19', '100', '.000000\n']]]
现在想的代码如下:
for i in range(0,len(data_4)):
for j in range(0,len(data_4[i])): ##假设为A命令
data_5.append(data_4[i][j].split(' '))
data_6.append(data_5) ##假设为B命令
我理想的逻辑顺序是:在i=0是,j依次在(0,4)中取值,执行4次A命令,然后会执行1次B命令。但实际结果跟预想结果差很多,貌似是执行17次A命令,才执行1次B命令,然后用重复上述过程3次,导致得到的数据长度虽然是3,但是每个子列表的长度都是17,这跟原始数据不一致。所以请教下,如何用for循环解决这个问题。其他办法的话,已经有朋友指导了,但是我还是想弄清楚for循环的逻辑和中止这个事情……