在python中从列表列表中提取列表

2024-10-02 18:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,如下所示:

[["['  SHR RXX,0x3\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"]]

我想将其转换为如下所示的列表:

[['  SHR RXX,0x3\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n'],['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n'],['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']]

我该怎么做


Tags: 列表movptrshrqwordrxx
2条回答

不需要花哨。只是:

  1. [2:-2]删除每个字符串开头和结尾的'[]'
  2. 在每个', '处拆分文本
  3. 使用列表理解功能对列表中的每个元素执行此操作
l = [["['  SHR RXX,0x3\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"]]
new_list = [x[0][2:-2].split("', '") for x in l]

输出:

[['  SHR RXX,0x3\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n'],
 ['  MOV RXX,qword ptr [RXX + 0x0]\\n',
  '  MOV RXX,qword ptr [RXX + 0x0]\\n',
  '  MOV RXX,qword ptr [RXX + 0x0]\\n'],
 ['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']]

可以使用ast.literal_eval将字符串作为每个列表元素的python语法进行计算

>>> from ast import literal_eval
>>> data = [["['  SHR RXX,0x3\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"],["['  MOV RXX,qword ptr [RXX + 0x0]\\n', '  MOV RXX,qword ptr [RXX + 0x0]\\n']"]]
>>> [[literal_eval(i) for i in sub][0] for sub in data]
[['  SHR RXX,0x3\n', '  MOV RXX,qword ptr [RXX + 0x0]\n'], ['  MOV RXX,qword ptr [RXX + 0x0]\n', '  MOV RXX,qword ptr [RXX + 0x0]\n', '  MOV RXX,qword ptr [RXX + 0x0]\n'], ['  MOV RXX,qword ptr [RXX + 0x0]\n', '  MOV RXX,qword ptr [RXX + 0x0]\n']]

相关问题 更多 >