【发布时间】:2019-08-21 15:37:39
【问题描述】:
我正在编写一个操作文件中字符串的程序。我想简单地将' LTORG' 上方的文字(字符串,例如组合成=X'1D' BYTE X'1D' 的SUB =X'1D')添加到我的测试文件中。
问题是我将每个 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']
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)
倒数第二行主要是产生问题。它将收集到的文字添加到一个列表中,并将它们作为一个打包列表插入,而不是每行一个字符串。
我希望它看起来像这样:
[' 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']
【问题讨论】:
-
testfile的类型是什么? (因此,myfile.testfile?) -
另外,为什么不用
if myfile.literals:而不是if myfile.literals is not None:?
标签: python python-3.x string list