让我们假设我在行中有这个line=vaddpd %ymm8,%ymm7,%ymm6
我想要的是a=%ymm8, b=%ymm7, c=%ymm6
或者说我们在排队line=cmp %rsi,%rbx
我想要a=%rsi, b=%rbx
x=line.split(",")
从在空间上使用拆分开始:
line="vaddpd %ymm8,%ymm7,%ymm6"
split_list = line.split(" ")[1].split(",")
然后您就有了一个所需变量的列表。你可以随心所欲地分配它们,例如一本字典:
import string
keys = list(string.ascii_lowercase)
my_dict = dict(zip(keys, split_list))
import re
line = "vaddpd %ymm8,%ymm7,%ymm6"
splt_line = re.split(r"[ ,]", line)
在此之后,您可以将splt_line
的元素分配给所需的任何变量。
使用Python 3.10+模式匹配似乎比简单的拆分(会在格式错误的数据上抛出IndexError(更简单、更健壮。
孩子们,不要在低于3.10的Python版本上在家里尝试这个=>语法错误
def do_2or3(input_):
print(f"nn{input_}:")
match input_.split():
case _, data:
match data.split(","):
case a,b,c:
print(f" {a=} {b=} {c=}")
case a,b:
print(f" {a=} {b=}")
case _:
print(f" !not a,b,c with {input_=}")
case _:
print(f" !not a,b,c with {input_=}")
do_2or3("line=vaddpd %ymm8,%ymm7,%ymm6")
do_2or3("line=cmp %rsi,%rbx")
do_2or3("line=cmp.%rsi,%rbx")
do_2or3("line=cmp %rsi,%rbx,d,e")
输出:
line=vaddpd %ymm8,%ymm7,%ymm6:
a='%ymm8' b='%ymm7' c='%ymm6'
line=cmp %rsi,%rbx:
a='%rsi' b='%rbx'
line=cmp.%rsi,%rbx:
!not a,b,c with input_='line=cmp.%rsi,%rbx'
line=cmp %rsi,%rbx,d,e:
!not a,b,c with input_='line=cmp %rsi,%rbx,d,e'