使用.split(),我想将一个字符串保存到两个或三个单独的变量中



让我们假设我在行中有这个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'

最新更新