我正在尝试提取某些字符串的某些部分。这些字符串看起来像
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]))。有谁知道为什么会发生这种情况以及如何解决它?
听起来您使用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)