在Python中替换文件中的特定字符串(后面)

2024-10-02 08:30:13 发布

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

替换Python文件中的特定字符串(如下)

我有一个文本文件,如下所示:

test   al,al
jne    0x514 <asm4+23>
mov    DWORD PTR [ebp-0x8],0x1
jmp    0x587 <asm4+138>
mov    edx,DWORD PTR [ebp-0x8]

我需要这样的结果

test   al,al
jne    asm4+23
mov    DWORD PTR [ebp-0x8],0x1
jmp    asm4+138
mov    edx,DWORD PTR [ebp-0x8]

Tags: 文件字符串testedxalmov文本文件ptr
3条回答

您可以使用“.startswith”方法:

test = """
    test   al,al
    jne    0x514 <asm4+23>
    mov    DWORD PTR [ebp-0x8],0x1
    jmp    0x587 <asm4+138>
    mov    edx,DWORD PTR [ebp-0x8]
    """.splitlines()

i = 0
while i < len(test):
    if test[i].startswith("jne"):
        test[i] = "jne    0x514 <asm4+23>"
    elif test[i].startswith("jmp"):
        test[i] = "jmp    0x587 <asm4+138>"
    i += 1

print("\n".join(test))

这可能适用于你的例子。我用过python正则表达式

import re

regex = r"(0.+<)(.+)>"
input_string="""
test   al,al
jne    0x514 <asm4+23>
mov    DWORD PTR [ebp-0x8],0x1
jmp    0x587 <asm4+138>
mov    edx,DWORD PTR [ebp-0x8]

"""
output=re.sub(r"(0.+<)(.+)>", r"\2", input_string)
print(output)

希望这有帮助

你正在把拆卸转换成可以重新组装的东西。你知道吗

不要对GDB或objdump -drwC -Mintel输出进行后期处理,而是使用一个反汇编程序,它首先以实际的GAS或NASM语法输出,并在注释中包含额外的信息。特别是对于x86,Agner Fog's ^{}。你知道吗

参见How to generate assembly code with gcc that can be compiled with nasm输出示例。你知道吗

(我认为它不能针对GAS.intel_syntax,只能针对GAS、NASM/YASM或MASM。但是GAS.intel_syntax与MASM类似,除了指令之外,因此可能有用。或者,如果您不介意AT&t语法,则可以直接组装它,而无需安装NASM。)

相关问题 更多 >

    热门问题