将包含字符串的列表和嵌套的字符串列表拆分为一个平面列表

asu*_*904 7 python string list python-3.x

我正在编写一个处理文件中字符串的程序。我想简单的文字(字符串,如添加SUB =X'1D'装配成=X'1D' BYTE X'1D'以上的),' LTORG'我testfile的。

问题是我收集了每个LTORG上方的文字作为列表,并将它们作为列表插入。我想一次插入一个文字。

我有这个输出是:

[' START 100', " SUB =X'1D'", ' LTORG', '["=X\'1D\' BYTE X\'1D\'"]', ' RESW 
   20', " SUB =X'0259'", " ADD =C'12345'", " MUL =X'4356'", " SUB =X'69'", ' 
   LTORG', '["=X\'0259\' BYTE X\'0259\'", "=C\'12345\' BYTE C\'12345\'", 
   "=X\'4356\' BYTE X\'4356\'", "=X\'69\' BYTE X\'69\'"]', " ADD =C'05'", ' 
   END EXA']
Run Code Online (Sandbox Code Playgroud)
def handle_LTORG(self, testfile):

    myfile.testfile = testfile

    for index, line in enumerate(myfile.testfile):
        line = line.split(" ", 3)
        if len(line) > 2:
            if line[2].startswith("=X") or line[2].startswith("=C"):
                raw_literal = line[2]
                instruction = 'BYTE'
                operand = line[2][1:]
                literal = [raw_literal, instruction, operand]
                literal = ' '.join(literal)
                myfile.literals.append(literal)
        if line[1] == 'LTORG':
            if myfile.literals is not None:
                myfile.testfile.insert(index + 1, str(myfile.literals))
                myfile.literals.pop(0)
Run Code Online (Sandbox Code Playgroud)

倒数第二行主要是产生此问题。它将收集的文字添加到列表中,并将其作为打包列表而不是每行一个字符串插入。

我希望它看起来像这样:

[' START 100', " SUB =X'1D'", ' LTORG', '"=X'1D' BYTE X'1D'"', ' RESW 20', " SUB =X'0259'", " ADD =C'12345'", " MUL =X'4356'", " SUB =X'69'", ' LTORG', '"=X'0259' BYTE X'0259'", "=C'12345' BYTE C'12345'", "=X'4356' BYTE X'4356'", "=X'69' BYTE X'69'", " ADD =C'05'", ' END EXA']
Run Code Online (Sandbox Code Playgroud)

Con*_*tMR 1

我会尝试使用类似此处的顶部评论的内容如何从列表列表中制作平面列表?

list = ['whatever',['1','2','3'],'3er']
flat_list = []
for member in list:
    if type(member) is list:
        for item in member:
            flat_list.append(item)
    else:
        flat_list.append(member)
Run Code Online (Sandbox Code Playgroud)