python - 分割并获取最后一次出现分隔符之前的str部分

Gru*_*vet 1 python split join

我正在尝试提取某些字符串的某些部分。这些字符串看起来像

a = "1_2_3"
b = "1_2_3_4"
Run Code Online (Sandbox Code Playgroud)

我想获取最后一个下划线之前每个字符串的所有内容:

"1_2"
"1_2_3"
Run Code Online (Sandbox Code Playgroud)

我认为这条线应该有效:

"_".join(a.split("_")[:-1])
"_".join(b.split("_")[:-1])
Run Code Online (Sandbox Code Playgroud)

但它给了我错误: AttributeError: 'str' object has no attribute 'joint'

然而,显然,a.split("_")[:-1]这不是一个 str 而是一个列表(我通过检查type(a.split("_")[:-1]))。有谁知道为什么会发生这种情况以及如何解决它?

Nie*_*ano 6

听起来您使用str.join()as拼写错误str.joint()

不过,对于您的用例,看起来str.rpartition()会更适合,删除 split-join 循环。

a = "1_2_3"
b = "1_2_3_4"

print(a.rpartition("_")[0])
print(b.rpartition("_")[0])
Run Code Online (Sandbox Code Playgroud)

输出

1_2
1_2_3
Run Code Online (Sandbox Code Playgroud)