0

我有两个字符串

my_first_string_1
my_second_string

使用拆分a, b, c, d = name.split('_', maxsplit(4)) 但因为第一个和第二个字符串具有不同数量的拆分元素,我得到一个ValueError: too many values to unpack. 我不在乎尾随_1,如何调用split两个字符串?

4

3 回答 3

3

来自文档,Assignment Statements如果目标列表包含一个以星号为前缀的目标,称为“星号”目标:该对象必须是一个可迭代的对象,其项目数至少与目标列表中的目标数减一。可迭代的第一项从左到右分配给加星标目标之前的目标。可迭代的最终项目分配给加星标的目标之后的目标。然后将迭代中剩余项目的列表分配给加星标的目标(列表可以为空)

这是一种相当冗长的说法,您可以在目标列表中包含一个加星标的变量来清理任何额外的数据。传统上,名称“_”用于您不关心的变量,因此您可以将拆分写为

a, b, c, *_ = name.split("_", maxsplit=3)

现在_将保存来自拆分的零个或多个值的列表。请注意,假设您将始终从拆分中获得至少 3 个值。

于 2021-06-21T17:20:13.580 回答
3

您可以执行以下操作,而不是使用最大拆分:

name.split('_')[:3]
于 2021-06-21T17:03:11.977 回答
0

您可以name.split('_')[:3]像其他答案建议的那样做。我注意到您在.split(). 它们基本上做同样的事情,将其拆分到某个索引(即 3)。
如果每个字符串都是一个单独的变量,您可以这样做:

first = 'my_first_string_1'
second = 'my_second_string'
first = first.split('_')[:3]
second = second.split('_')
print(first)
print(second)
于 2021-06-21T17:07:11.097 回答